在这个全局变更事件中,有没有办法可以检测哪个属性发生了变化?
myModel.on('change', function(model) { // Which attribute changed? });
我尝试了以下方法:
使用myModel.previousAttributes()
但它总是返回最新的值...我想它只会在服务器交互后更新.
迭代低谷属性并使用myModel.hasChanged(attr)
但总是返回false.
有没有办法实现这个目标?
您可以使用 model.changedAttributes
changedAttributes model.changedAttributes([attributes])
仅检索已更改的模型属性的哈希值,如果没有则返回false.
(可选)可以传入外部属性哈希,返回该哈希中与模型不同的属性.这可用于确定应更新视图的哪些部分,或者需要进行哪些调用以将更改同步到服务器
例如,
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' });
和演示http://jsfiddle.net/nikoshr/NYnqM/