javascript - 当属性改变时$watch的对象不被触发

标签 javascript angularjs angularjs-scope angularjs-controller

我有一个对象:

$scope.obj = {bar: 'bar 值', foo: 'foo 值'};

我想知道 bar、foo 或两者是否发生变化。

我正在这样做:

$scope.$watch('obj', function() { console.log("正在监视 obj") });

并且如果我更改对象的属性“正在监视 obj”消息,它永远不会显示。但是,如果我观看 'obj.foo''obj.bar' 我可以看到该消息。所以,问题是:

为什么当我观看'obj'时消息没有显示?我该怎么做?

这个plunker更好地显示问题...

最佳答案

您需要将 objectEquality 参数设置为 true

http://docs.angularjs.org/api/ng .$rootScope.Scope

//$watch(watchExpression, 监听器, objectEquality)

$scope.$watch('obj', function() {
    console.log("watching obj")
}, true);

关于javascript - 当属性改变时$watch的对象不被触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19498817/

相关文章:

javascript - 在 AngularJS 中,我的指令无法访问 $http 中定义的父 Controller 的 $scope 属性

javascript - 在 Promise 之后从 .catch 函数内访问 $scope

javascript - 如何在 D3.js 力向图中设置焦点节点?

javascript - 我应该用哪种方式编写新的 Mongoose 模式?

javascript - 如何选择 DOM 中除一个 div 和子元素之外的所有元素

javascript - 使用 angularjs 动态更改变量值

javascript - 在自定义验证中使用 Angular JS + Laravel 检查当前密码

javascript - 如何更改显示在 HTML 数据列表输入上的图标?隐藏是可能的,但我可以将其更改为其他一些图标,例如向下箭头吗?

javascript - Angular 验证器和 ng-maxlength 使用

javascript - Angular ng-disabled 功能