骨干收集持续存在

时间:2013-09-06 00:44:22

标签: javascript backbone.js

我很少被JS困住,但这次我感觉我在某处做错了 - 开明的人,你走了:

在view1中,我有:

    listView = new ListView({collection: listElements});
    listView.render();

每次listElements更改时都会调用。

在ListView中,该集合被解析为render方法中的模板,然后在点击时触发一个事件:

  //ListView.js
  events: {
    "click .listEl": "doStuff"
  ...
  },
  doStuff: function(e) {
    // if this is when the problem arises : this.collection at this place isn't the
    // same collection passed to ListView in view1 (or the collection in
    // the initialize() ).
    // It's actually the first value ever to be rendered with ListElements.

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

非常感谢@muistooshort。

这是由于Zombie事件/观点;要“快速”修复它,在你需要摆脱视图并且它与事件绑定后运行它。

  this.listView.undelegateEvents();
  $(this.listView.el).removeData().unbind();
  this.listView.$el.html('');

更优雅的版本是扩展Backbone.View并向其添加remove()方法。