我正在使用angularJS和coffeescript。为什么在state.title更改时会触发以下$ watch表达式不?
$scope.state = {title: 'Mr'}
$scope.$watch 'state', ()->console.log 'state changed!', true
绑定到此的html很简单:
<input type="text" ng-model="state.title"/>
PS:我已经解决了这个问题,但我花了一个小时。以为我会分享。该错误在上面的代码中可见,不需要其他代码。
答案 0 :(得分:0)
那是因为手表的工作方式是进行深度/脏检查。只进行脏检查以查看对象引用是否已更改(在这种情况下它没有)深度检查会发现对象已更改,因为其中一个键已更新。
我不熟悉coffeescript而且我倾向于远离它,但是当我通过解释器运行你的代码时,这就是它吐出的内容:
$scope.$watch('state', function() {
return console.log('state changed!', true);
});
哪个不对,我相信你想吐出来:
$scope.$watch('state', function() {
return console.log('state changed!');
}, true);