Backbone.js 主干模型侦听器在模型保存后立即停止工作
在主干视图的initialize函数中,我创建了以下侦听器:Backbone.js 主干模型侦听器在模型保存后立即停止工作,backbone.js,Backbone.js,在主干视图的initialize函数中,我创建了以下侦听器: this.listenTo(this.model.get('clusters'), 'add remove', this.saveChanges); 这将成功地导致在第一次从“群集”集合添加/删除模型时调用my saveChanges函数。saveChanges函数中只有一行: this.model.save(); 一旦被调用,添加/删除集群将不再调用“添加”或“删除”事件。为什么保存模型会破坏侦听器?这是可以防止的,还是有办法重
this.listenTo(this.model.get('clusters'), 'add remove', this.saveChanges);
这将成功地导致在第一次从“群集”集合添加/删除模型时调用my saveChanges函数。saveChanges函数中只有一行:
this.model.save();
一旦被调用,添加/删除集群将不再调用“添加”或“删除”事件。为什么保存模型会破坏侦听器?这是可以防止的,还是有办法重新建立监听器
还是说我对模型和/或集合有什么基本的不了解…?让我们来分析一下您的代码: 你写
this.listenTo(this.model.get('clusters'), 'add remove', this.saveChanges);
这等于
var clusters = this.model.get('clusters');
this.listenTo(clusters, 'add remove', this.saveChanges);
现在,我只假设在获得该事件后,您将set()
一个新的对象聚集在您的模型中
这里的问题是,您的视图仍然侦听来自同一个旧集群
对象的事件,这不再相关-您的模型处理另一个对象
另一种情况可能是,当视图被remove
d.时,主干将从其模型中清除视图的事件处理程序。。如果您愿意共享整个代码,您可以很容易地确定答案。事实上,保存模型会导致调用其“parse”函数,我注意到它正在为“clusters”设置一个新值(我没有编写此代码,只是试图理解和改进它)。谢谢你的提示!我仍然需要弄清楚parse是如何/为什么做它正在做的事情的,但至少我现在知道侦听器的行为是我认为它应该做的。。。