diff --git a/widgets/Widget.js b/widgets/Widget.js index 39e7e1623..f790dc994 100644 --- a/widgets/Widget.js +++ b/widgets/Widget.js @@ -386,10 +386,6 @@ Widget.prototype = widgetProto = { this.state._set(name, value, true /* ensure:true */, true /* forceDirty:true */); }, - _removeDOMEventListeners: function() { - removeDOMEventListeners(this); - }, - replaceState: function(newState) { this.state._replace(newState); }, @@ -478,8 +474,12 @@ Widget.prototype = widgetProto = { return this.__state._dirty; }, - _reset: function() { + _reset: function(shouldRemoveDOMEventListeners) { resetWidget(this); + + if (shouldRemoveDOMEventListeners) { + removeDOMEventListeners(this); + } }, shouldUpdate: function(newState, newProps) { @@ -509,8 +509,8 @@ Widget.prototype = widgetProto = { var globalData = {}; globalData.$w = [self, !props && state && state._raw]; - var fromEls = markoWidgets._roots(this, {}); - var doc = this.__document; + var fromEls = markoWidgets._roots(self, {}); + var doc = self.__document; updateManager.batchUpdate(function() { var createOut = renderer.createOut || marko.createOut; diff --git a/widgets/init-widgets-browser.js b/widgets/init-widgets-browser.js index d2fdfa238..c61733eb6 100644 --- a/widgets/init-widgets-browser.js +++ b/widgets/init-widgets-browser.js @@ -78,8 +78,7 @@ function initWidget(widgetDef, doc) { } if (existingWidget) { - existingWidget._removeDOMEventListeners(); - existingWidget._reset(); + existingWidget._reset(true /* shouldRemoveDOMEventListeners */); widget = existingWidget; } else { widget = registry.createWidget(type, id, doc);