Backbone.js再次渲染视图还是重新创建?

时间:2013-07-01 17:11:55

标签: javascript jquery backbone.js

目前我正在处理我的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或者是否必须通过用新实例覆盖它来重新启动对象?

1 个答案:

答案 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”方法。

基本上,不要尝试重新使用视图,只是销毁它们(通过适当的清理)并创建新的视图。你的观点应该足够轻巧,杀死和重建它们无关紧要。