我有一个服务,可以保存我的待办事项应用程序的任务。它有getActive()
和getCompleted()
方法,分别返回一个带有active和completed方法的数组。
我想显示强制,有效和总任务的数量。我用angular $watch
$scope.active = tasks.getActive().length;
$scope.completed = tasks.getCompleted().length;
$scope.$watch(tasks.getActive, function() {
$scope.active = tasks.getActive().length;
});
$scope.$watch(tasks.getCompleted, function() {
$scope.completed = tasks.getCompleted().length;
});
它工作正常,但每次我更改任务状态或删除它时都会向控制台抛出很多错误。
Uncaught Error: 10 $digest() iterations reached. Aborting!
Watchers fired in the last 5 iterations:
答案 0 :(得分:1)
我认为你不需要那些手表。在AngularJS中,视图中的大多数表达式都会动态更新,因此您可以直接使用tasks.getCompleted().length
,例如:
$scope.active = function(){
return tasks.getActive().length;
};
$scope.completed = function(){
return tasks.getCompleted().length;
};
关于10个摘要错误,请参阅Maxing out on $digest iterations。
答案 1 :(得分:0)
我认为您不应该在getActive
回调中再次呼叫getCompleted
和$watch
,您实际上可以将其指定为function(newValue, oldValue)
并拥有新旧值而不必再次调用该方法,这可能会导致$digest
循环。