小提琴
我有一个列表,我希望在它发生变化时得到通知。一个简单的$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'
每次调用时都会调用 for 的回调names.push()
。是否有为此推荐的解决方法?或者我只是没有$watch
正确使用?