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(){