在Backbone.js中,我有一个模型,我正在绑定一个更改事件,但我想防止这种情况发生在特定的属性更改上。例如,我希望在调用model.set()
时每次调用model.set({arbitraryName: value})
,除之前触发它。
这就是我所拥有的:
this.bind("change", function() {
this.update();
});
但我不知道如何确定正在设置的内容 - 任何想法?
修改
看起来我可以打电话
model.set({arbitraryName: value}, {silent: true})
防止更改事件被触发(这对我需要的东西起作用),但如果我有类似的东西会怎么样:
this.bind("change:arbitraryName", functionName)
答案 0 :(得分:3)
您可以考虑在事件处理程序中使用hasChanged
吗?
var self = this;
this.bind("change", function() {
if(!self.hasChanged("someAttribute")){
self.update();
}
});
我不确定我完全理解你的问题。请注意上述和下面的区别。
this.bind("change:someAttribute", function(){
self.update();
});
第一个会在update
保持不变的任何更改时触发someAttribute
。第二个将触发对someAttribute
的任何更改的更新。
希望这有帮助。