From a348ecf03499a7f58daf3848991c3fac5f2f5e7d Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Fri, 5 Sep 2014 16:10:03 -0600 Subject: [PATCH] Allow CommandRegistry::rootNode to be reassigned --- src/command-registry.coffee | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) 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'