我在模板中有这个字符串:
<li class="list__item" ng-repeat="item in items">
<input class="toggle" type="checkbox" ng-model="item.done">
<label>{{ item.description }}</label>
<button class="destroy" ng-click="remove(item)"></button>
</li>
我控制器中的js代码:
$scope.$watchCollection('items', function(newValue, oldValue) {
cache.set($scope.items);
});
$ scope.items已定义。
当我检查一个项目时,$ watchCollection没有抓住这个变化。 我读过todo mvc source并没有找到我的错误。
错误在哪里? 感谢。
答案 0 :(得分:2)
watchCollection
会监视items
集合中的浅层更改。这意味着只有在向items
集合添加/删除元素时才会触发它。如果您希望在更改item
的属性时触发手表,则必须使用watch
。
来自文档:
Shallow监视对象的属性,并在任何属性发生更改时触发(对于数组,这意味着要观察数组项;对于对象映射,这意味着要观察属性)。