为什么以下棱角分析表达不起作用?

时间:2014-02-26 17:06:08

标签: angularjs coffeescript

我正在使用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:我已经解决了这个问题,但我花了一个小时。以为我会分享。该错误在上面的代码中可见,不需要其他代码。

1 个答案:

答案 0 :(得分:0)

那是因为手表的工作方式是进行深度/脏检查。只进行脏检查以查看对象引用是否已更改(在这种情况下它没有)深度检查会发现对象已更改,因为其中一个键已更新。

我不熟悉coffeescript而且我倾向于远离它,但是当我通过解释器运行你的代码时,这就是它吐出的内容:

$scope.$watch('state', function() {
  return console.log('state changed!', true);
});    

哪个不对,我相信你想吐出来:

$scope.$watch('state', function() {
  return console.log('state changed!');
}, true);