保存模型后,骨干模型侦听器将停止工作

时间:2013-05-21 20:15:33

标签: backbone.js

在我的骨干View的初始化函数中,我创建了以下监听器:

this.listenTo(this.model.get('clusters'), 'add remove', this.saveChanges);

这成功地使我的saveChanges函数被称为 first 时间,从'clusters'集合中添加/删除模型。 saveChanges函数中只有一行:

this.model.save();

调用后,添加/删除群集不再调用“添加”或“删除”事件。为什么保存模型会破坏监听器?可以预防,还是有办法重建听众?

或者有什么基础我不了解模特和/或收藏品吗?

1 个答案:

答案 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时清除视图的事件处理程序。如果你共享整个代码,可以轻松回答。