我想要$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/