【问题标题】:Backbone model listener stops working as soon as the model is saved保存模型后,骨干模型侦听器停止工作
【发布时间】:2013-05-21 20:15:33
【问题描述】:

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

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

这成功地导致我的 saveChanges 函数在第一次时被调用/从“集群”集合中删除/删除模型。 saveChanges 函数中只有一行:

this.model.save();

一旦调用,添加/删除集群不再调用“添加”或“删除”事件。为什么保存模型会破坏听众?可以防止这种情况,还是有办法重新建立监听器?

或者我对模型和/或集合有什么基本的不了解...?

【问题讨论】:

    标签: backbone.js


    【解决方案1】:

    让我们分解你的代码:

    你写

    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 是 removed. 时,Backbone 会从其模型中清除您的视图的事件处理程序。如果您愿意共享整个代码,可以很容易地回答。

    【讨论】:

    • 确实,保存模型会导致它的“解析”函数被调用,我注意到这是为“集群”设置一个新值(我没有写这个代码,只是想理解和改进它)。谢谢你的提示!我仍然需要弄清楚 parse 如何/为什么做它正在做的事情,但至少我现在知道监听器的行为正如我认为的那样......
    猜你喜欢
    • 1970-01-01
    • 2015-03-19
    • 1970-01-01
    • 2013-07-23
    • 2012-04-24
    • 1970-01-01
    • 1970-01-01
    • 2013-10-14
    • 1970-01-01
    相关资源
    最近更新 更多