diff --git a/src/command-registry.coffee b/src/command-registry.coffee index eb1a45ea2..22f3fb392 100644 --- a/src/command-registry.coffee +++ b/src/command-registry.coffee @@ -9,11 +9,13 @@ class CommandRegistry constructor: (@rootNode) -> @listenersByCommandName = {} - setRootNode: (rootNode) -> - throw new Error("Already assigned root node.") if @rootNode? - @rootNode = rootNode + setRootNode: (newRootNode) -> + oldRootNode = @rootNode + @rootNode = newRootNode + for commandName of @listenersByCommandName - @rootNode?.addEventListener(commandName, @dispatchCommand, true) + oldRootNode?.removeEventListener(commandName, @dispatchCommand, true) + newRootNode?.addEventListener(commandName, @dispatchCommand, true) add: (selector, commandName, callback) -> if typeof commandName is 'object'