Javascript Backbone.js重新渲染视图还是重新创建?
目前,我正在处理backbone.js应用程序中的僵尸。我已经阅读了这篇关于僵尸的文章,并用以下内容扩展了我的项目:Javascript Backbone.js重新渲染视图还是重新创建?,javascript,jquery,backbone.js,Javascript,Jquery,Backbone.js,目前,我正在处理backbone.js应用程序中的僵尸。我已经阅读了这篇关于僵尸的文章,并用以下内容扩展了我的项目: Backbone.View.prototype.close = function(){ this.remove(); this.unbind(); if (this.onClose){ this.onClose(); } } 我的问题是,如何恢复这个关闭过程?我可以在对象上调用render,还是必须通过使用新实例覆盖对象来重新启动对象?该调用将从DOM中
Backbone.View.prototype.close = function(){
this.remove();
this.unbind();
if (this.onClose){
this.onClose();
}
}
我的问题是,如何恢复这个关闭过程?我可以在对象上调用render,还是必须通过使用新实例覆盖对象来重新启动对象?该调用将从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()
期间,您还将丢失所有主干事件绑定。然后,无论您的onClose
做什么(如果您有),您都需要“undoonClose
”方法
基本上,不要试图重用视图,只需销毁它们(通过适当的清理)并创建新的视图即可。您的视图应该足够轻量级,删除和重建它们应该无关紧要。我如何正确地销毁视图?删除并设置为null?Derick的
close
是一种合理的方法,然后只需确保没有任何对隐藏在任何地方的实例化视图的引用。