更改属性时不触发$watch的对象
$watch's object not triggered when attributes are changed
我有一个对象:
$scope.obj = {bar: 'bar value', foo: 'foo value'};
我想知道酒吧、foo 或两者是否改变。
我正在这样做:
$scope.$watch('obj', function() { console.log("watching obj") });
如果我更改对象的属性"观看 obj"消息,它永远不会显示。但是,如果我观看'obj.foo'
或'obj.bar'
我可以看到消息。所以,问题是:
为什么当我观看'obj'
时没有显示消息? 我该怎么做?
这个 plunker 更好地展示了问题...
您需要
将objectEquality
参数设置为 true
。
http://docs.angularjs.org/api/ng.$rootScope.Scope
$watch(watchExpression, listener, objectEquality)
$scope.$watch('obj', function() {
console.log("watching obj")
}, true);
我只是补充@moderndegree的答案,
如果您要监视的对象有几个元素(在本例中只有两个),您也可以使用
$scope.$watch('obj.foo+obj.bar', function() {
console.log("changed");
});
哪个比深度观看更有效。
相关文章:
- 引用对象中的通用值
- jQuery匹配JSON对象的部分文本
- 节点导出返回一个空对象
- 如何在Javascript中将JSon对象转换为数组
- 我可以在json对象中添加一个函数吗
- 使用JS将数组转换为json对象
- 全局变量和全局对象的属性之间有什么区别吗
- 更改属性时不触发$watch的对象
- 使用gull.watch投掷“;类型错误:对象#<对象>没有方法'手表'&”;
- Angular$watch在对象上是否包括其原型成员
- AngularJS:数组中所有对象的$watch属性
- Angular $watch对象并获取属性名
- AngularJS忽略被监视对象中的键,或者重写$watch监听器
- 当比较对象时,有选择地控制角$watch的发射
- $watch查找JSON Angularjs中的对象
- $watch(Collection)不能捕捉对象属性的变化
- 如何在数组中独立的多个对象上使用Angular的$watch with equal
- 在独立对象上使用Object.watch()变量
- AngularJS -变量必须作为$watch被触发的对象属性
- 使用watch.js取消监视对象的问题