在这个全局变更事件中,有没有办法可以检测哪个属性发生了变化?
myModel.on('change', function(model) {
// Which attribute changed?
});
我尝试了以下内容:
myModel.previousAttributes()
但它总是返回最新值...我猜它只会在服务器交互后更新。myModel.hasChanged(attr)
,但它总是返回false。有没有办法实现这个目标?
答案 0 :(得分:12)
changedAttributes model.changedAttributes([attributes])
仅检索已更改的模型属性的哈希,如果是,则检索为false 没有。
可选地,可以传递外部属性哈希 in,返回该哈希中与模型不同的属性。 这可以用来确定视图的哪些部分应该是 更新,或需要进行哪些调用以将更改同步到 服务器
例如,
var m = new Backbone.Model({
att1: 'a',
att2: 'b',
att3: 'c'
});
m.on('change', function() {
console.log(m.changedAttributes());
console.log(_.keys(m.changedAttributes()));
});
m.set({
att1: 'd',
att3: 'e'
});