javascript - Angular $watch 对象并获取属性名称

标签 javascript angularjs

我想要$watch一个对象的任何属性的更改,并且当其中任何一个属性发生更改时,获取其名称(除了newValue旧值)。

这可能吗?

最佳答案

这个问题已经有两年了,但我刚刚遇到了同样的问题,我想我应该分享我的解决方案。回到 1.2 版本,您过去可以通过在 watch 函数中引用 this.exp 来访问更改后的属性,但可能出于性能原因,这种做法已被弃用。获取更改的属性的最简单方法是循环遍历新旧对象并按属性名称比较值。

$scope.settings = {
    'opt1' : 'something',
    'opt2' : 'something else',
    'opt3' : 'another something',
};

$scope.$watchCollection('settings', function(newObj, oldObj) {

    // Loop through new object and compare
    angular.forEach(newObj, function(val, key) {
        if(newObj[key] !== oldObj[key]) {

            // settings[key] changed
        }
    });

}, true);

关于javascript - Angular $watch 对象并获取属性名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25434612/

相关文章:

javascript - 如何在 angular.js Controller 中处理异步?

javascript - Firefox 4.06b IndexedDB 支持

javascript - app.get 不工作

javascript - 用于从 C++ 文件解析函数名称的正则表达式 (JavaScript) 在某些空白处不起作用

javascript - 如何在不打开模式对话框的情况下为数据切换 ="modal"按钮设置自定义单击事件处理程序?

json - 在 Angular 中将 JSON 导出为 CSV

javascript - 在 angularjs 中使用 $timeout 时如何暂停和恢复计时器

javascript - Angular 传递参数

javascript - 给出单个条目时,Google 图表会出现错误

arrays - 我可以在 Protractor by.Repeater 中取回数组而不是字符串吗?