フィドル
リストがあり、それが変更されるたびに通知を受けたいです。単純な$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正しく使用していないだけですか?