我试图在指令模板中过滤ng-重复的结果。下面的解决方案在屏幕上显示得很好,但是我现在得到了错误:Uncaught Error: [$rootScope:infdig] 10 $digest() iterations reached. Aborting!
我引用了这个页面,解决方案没有工作:https://docs.angularjs.org/error/$rootScope/infdig
对我怎么解决这个有什么建议吗?还是有更好的方法去做?
HTML:
<filtered-set items="businesses | filter : {cat: 'jedi'} : true | filter:query |orderBy: orderList"></filtered-set>
模板:
<div class="bscroll mThumbnailScroller" data-mts-axis="x">
<ul>
<li class="business-card" data-ng-repeat="business in items" data-ng-click="select(business)">
<h2>{{business.name}}</h2>
<p>{{business.cat}}</p>
</li>
</ul>
</div>
角JS:
.controller('starWarsCtrl', function ($scope) {
$scope.businesses = [
{"name": "Obi-Wan Kenobi",
"index":88,
"cat": "jedi"},
{"name": "Yoda",
"index":69,
"cat":"jedi"},
{"name": "Lando",
"index":31,
"cat": "smuggler"},
{"name": "Han Solo",
"index":90,
"cat": "smuggler"},
{"name": "Darth Vader",
"index":98,
"cat": "sith"},
{"name": "Jar-Jar Binks",
"index":80,
"cat": "alien"},
{"name": "Mace Windu",
"index":45,
"cat": "jedi"},
{"name": "Chewy",
"index":76,
"cat": "smuggler"}
];
.directive('filteredSet', function() {
return {
restrict: 'E',
scope: {
items: '='
},
templateUrl: 'partials/filtered-set.html'
};
});
发布于 2016-02-24 17:49:10
也许有办法解决我的上述问题,因为以下是我所做的:
我在控制器中创建了这个函数,它基本上获取了与"cat"
属性匹配的所有JSON属性:
angular.forEach($scope.data, function(item) {
//item.cat is a string
if (categories.indexOf(item.cat) == -1) {
categories.push(item.cat);
}
});
return categories;
}
以及我的HTML,它本质上是ng-repeat
中的一个ng-repeat
<div data-ng-app="app" data-ng-controller="starWarsCtrl">
<ul>
<li data-ng-repeat="cat in getCategories()">
<h2>{{cat}}</h2>
<div ng-click="select(i)" ng-repeat="i in data | filter:{cat: cat}">
<p>{{i.name}}</p>
</div>
</li>
</ul>
</div>
我还用我的解决方案创建了一个代码库:http://codepen.io/Auzy/pen/adeqrP
我希望这能帮到你!
https://stackoverflow.com/questions/35588743
复制相似问题