0

我很少被 JS 卡住,但这次我感觉我在某个地方做错了 - 开明的人,给你:

在 view1 中,我有:

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

每次 listElements 更改时都会调用它。

在 ListView 中,集合被解析为render方法中的模板,然后在 click 上触发事件:

  //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.

有什么想法吗 ?

4

1 回答 1

0

感谢@muistooshort 的提醒。

这是由于僵尸事件/视图;要“快速”修复它,在您需要摆脱视图并且它绑定到事件之后运行它。

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

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

于 2013-09-06T15:01:28.607 回答