当前位置:  开发笔记 > 运维 > 正文

更改事件的更改属性

如何解决《更改事件的更改属性》经验,为你挑选了1个好方法。

在这个全局变更事件中,有没有办法可以检测哪个属性发生了变化?

myModel.on('change', function(model) {
  // Which attribute changed?
});

我尝试了以下方法:

使用myModel.previousAttributes()但它总是返回最新的值...我想它只会在服务器交互后更新.

迭代低谷属性并使用myModel.hasChanged(attr)但总是返回false.

有没有办法实现这个目标?



1> nikoshr..:

您可以使用 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/

推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有