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仍然相同,我知道可能存在反馈循环的风险.
我的知识有限,所以也许我不应该回答,但我会尝试在创建时传递对 ChartModel 的引用,该引用引用您想要更新的“其他”模型。然后在 updateChartModel() 上触发一个事件,并确保您的“其他”模型绑定在该事件上。
我的问题是:静音对象是否会使所有事件静音?或者只是模型相关的?如果所有事件都静音,这显然行不通。
归档时间: |
|
查看次数: |
344 次 |
最近记录: |