我有一个看似如下的ng-repeat:
<div ng-repeat="day in days">
<div ng-repeat="item in getItemsForDay(day)">
getItemsForDay(day)
返回$firebaseArray
,查询并使用正确的数据进行过滤。最初$firebaseArray
列出了所有日子里的所有项目。但是每次调用方法时我都会过滤掉它。
这导致
Error: $rootScope:infdig Infinite $digest Loop.
10 $digest() iterations reached. Aborting!
如何动态更改$firebaseArray
以便我可以遍历正确的数据?
答案 0 :(得分:1)
我建议使用$filter服务。如果$ firebaseArray具有您尝试过滤的特定属性,则只需使用以下命令即可:
<div ng-repeat="day in days">
<div ng-repeat="item in $firebaseArray | filter:{matchingProperty: day}:true"></div>
</div>
有关更深入的示例,请参阅此plnkr。
<强> JS 强>
app.controller('MainCtrl', function($scope) {
$scope.days = [1,2,3,4,5,6,7];
$scope.stuff = [{day: 1}, {day: 1}, {day: 2}, {day: 2}, {day: 3}, {day: 3}, {day: 4}, {day: 5}, {day: 6}, {day: 7}];
});
<强> HTML 强>
<div ng-repeat="day in days">
Day {{$index+1}} Matches:
<div ng-repeat="s in stuff | filter:{day: day}:true">
{{s.day}}
</div>
</div>
如果您无法简单地匹配属性,那么您始终可以构建自己的过滤器...这里有good example如何做到这一点。