首页 > 解决方案 > 为什么我收到 RangeError: Maximum call stack size exceeded 观察对父范围变量的更改(过滤的 ng-repeat 数组)?

问题描述

我的问题是我想观察对使用 ng-repeat 创建的过滤数组的更改,因为我已经知道 ng-repeat 创建自己的作用域,并且在使用 $scope 观察数组时引用了父作用域.$watch 实际上有效(它准确地检测到数组的更改),我收到多个控制台日志错误说:angular.js:12520 RangeError: Maximum call stack size exceeded。 有人对我可以做些什么来解决问题有任何意见吗?

HTML: <div class="module-card" ng-repeat="module in ($parent.filteredModules = (modules | released : true | moduleFilter : allFilters | unique: 'name' | orderBy : sortFunc : orderedAsc | limitTo : limitResults)) track by $index">

JS:

$scope.$watch('filteredModules', function(newVal, oldVal){
   console.log(newVal, oldVal);
}, true)

标签: angularjs

解决方案


改用 $scope.$watchCollection 解决了这个问题。如果有人遇到同样的问题。


推荐阅读