在我的骨干View的初始化函数中,我创建了以下监听器:
this.listenTo(this.model.get('clusters'), 'add remove', this.saveChanges);
这成功地使我的saveChanges函数被称为 first 时间,从'clusters'集合中添加/删除模型。 saveChanges函数中只有一行:
this.model.save();
调用后,添加/删除群集不再调用“添加”或“删除”事件。为什么保存模型会破坏监听器?可以预防,还是有办法重建听众?
或者有什么基础我不了解模特和/或收藏品吗?
答案 0 :(得分:2)
让我们分解您的代码:
你写
this.listenTo(this.model.get('clusters'), 'add remove', this.saveChanges);
等于
var clusters = this.model.get('clusters');
this.listenTo(clusters, 'add remove', this.saveChanges);
现在我只假设在您获得该事件后,您set()
在模型中添加了一个新的clusters
对象。
这里的问题是,您的视图仍会侦听来自同一个旧clusters
对象的事件,这些事件不再相关 - 您的模型处理另一个对象!
另一种情况可能是Backbone在remove
d时清除视图的事件处理程序。如果你共享整个代码,可以轻松回答。