diff --git a/IPython/html/static/widgets/js/manager.js b/IPython/html/static/widgets/js/manager.js index f580373..b6e0792 100644 --- a/IPython/html/static/widgets/js/manager.js +++ b/IPython/html/static/widgets/js/manager.js @@ -179,7 +179,13 @@ define([ return Promise.resolve(view.render()).then(function() {return view;}); }).catch(utils.reject("Couldn't create a view for model id '" + String(model.id) + "'", true)); }); - model.views[utils.uuid()] = model.state_change; + var id = utils.uuid(); + model.views[id] = model.state_change; + model.state_change.then(function(view) { + view.on('remove', function() { + delete view.model.views[id]; + }, this); + }); return model.state_change; }; diff --git a/IPython/html/static/widgets/js/widget.js b/IPython/html/static/widgets/js/widget.js index b47698f..1e785d6 100644 --- a/IPython/html/static/widgets/js/widget.js +++ b/IPython/html/static/widgets/js/widget.js @@ -388,9 +388,6 @@ define(["widgets/js/manager", this.on('displayed', function() { this.is_displayed = true; }, this); - this.on('remove', function() { - delete this.model.views[this.id]; - }, this); }, update: function(){