2

目前我正在处理我的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();
  }
}

我的问题是,如何恢复这个关闭过程?我可以只在对象上调用渲染,还是必须通过用新实例覆盖它来重新启动对象?

4

1 回答 1

1

该调用从 DOMthis.remove()中删除视图: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()在andthis.stopListening()调用期间,您还将丢失所有 Backbone 事件绑定。然后是你onClose所做的任何事情(如果你有的话),所以你需要“撤消onClose”方法。

基本上,不要试图重用视图,只需销毁它们(通过适当的清理)并创建新视图。您的视图应该足够轻量级,以至于杀死和重建它们应该无关紧要。

于 2013-07-01T17:37:24.560 回答