使Backbone.js模型改变"部分"沉默?

dan*_*ani 6 javascript backbone.js

当我的"chartModel"发生变化时,我想更新"globalModel".

chartModel.bind("change", updateGlobalModel);

updateGlobalModel(){
  globalModel.set(obj)
}
Run Code Online (Sandbox Code Playgroud)

反之亦然,我希望我的chartModel在globalModel更改时更新.

globalModel.bind("change", updateChartModel);

updateChartModel(){
  chartModel.set(obj)
}
Run Code Online (Sandbox Code Playgroud)

这会在设置globalModel时产生反馈循环.我可以通过设置{silent:true}来防止这种情况.

但问题来了.我有另一个依赖于change事件的Model:

globalModel.bind("change", updateOtherModel);
Run Code Online (Sandbox Code Playgroud)

如何警告此模型的变化而不是前者(避免反馈循环)?

更新:
目前,我决定为每个集合调用生成一个特定的ID:

set : function(attrs, options) { 
        if(!("setID" in attrs)){
            attrs.setID = myApp.utils.uniqueID(); //newDate.getTime();
        }
        Backbone.Model.prototype.set.call(this, attrs, options);
    },
Run Code Online (Sandbox Code Playgroud)

这样,我总是可以从我的应用程序中的任何位置生成"setID"属性.如果从模型中提取东西时setID仍然相同,我知道可能存在反馈循环的风险.

Bre*_*ain 0

我的知识有限,所以也许我不应该回答,但我会尝试在创建时传递对 ChartModel 的引用,该引用引用您想要更新的“其他”模型。然后在 updateChartModel() 上触发一个事件,并确保您的“其他”模型绑定在该事件上。

我的问题是:静音对象是否会使所有事件静音?或者只是模型相关的?如果所有事件都静音,这显然行不通。