目前我正在处理我的backbone.js应用程序中的僵尸。我已经阅读了这篇关于僵尸的文章http://lostechies.com/derickbailey/2011/09/15/zombies-run-managing-page-transitions-in-backbone-apps/,并用这个扩展了我的项目:
Backbone.View.prototype.close = function(){
this.remove();
this.unbind();
if (this.onClose){
this.onClose();
}
}
我的问题是,如何恢复这个关闭过程?我可以只在对象上调用render或者是否必须通过用新实例覆盖它来重新启动对象?
答案 0 :(得分:1)
this.remove()
调用会从DOM中删除视图的el
:
// Remove this view by taking the element out of the DOM, and removing any
// applicable Backbone.Events listeners.
remove: function() {
this.$el.remove();
this.stopListening();
return this;
},
因此您必须重新创建并重新绑定所有DOM事件。在this.unbind()
和this.stopListening()
调用期间,您还将丢失所有Backbone事件绑定。然后就是onClose
所做的任何事情(如果你有的话),所以你需要“撤消onClose
”方法。
基本上,不要尝试重新使用视图,只是销毁它们(通过适当的清理)并创建新的视图。你的观点应该足够轻巧,杀死和重建它们无关紧要。