フィドル
リストがあり、それが変更されるたびに通知を受けたいです。単純な$watch
式が機能していません。これは、angular が構造上の等価性ではなく、参照の等価性をチェックしているためだと推測しています。
<html ng-app>
<head>
</head>
<body ng-controller="Root">
<h1>Base Angular Fiddle</h1>
Times changed: {{timesChanged}}
<ul>
<li ng-repeat="name in names">{{name}}</li>
<li><button ng-click="names.push('another name')">Add</button></li>
</ul>
</body>
</html>
function Root($scope) {
$scope.timesChanged = 0;
$scope.names = ['foo', 'bar', 'baz'];
$scope.$watch('names', function() {
$scope.timesChanged++;
});
}
私が期待しているのは'names'
、 を呼び出すたびに のコールバックが呼び出されることですnames.push()
。これに対して推奨される回避策はありますか? それとも、$watch
正しく使用していないだけですか?