我有以下代码,我有一个nested ng-repeat
,并在内部ng-repeat中使用filter
和limitTo
个选项
这里我的套装中的物品非常少。但在我的实际案例中,我在外圈和内圈都有大约1000个项目。但是我遇到了使用ng-repeats进行大集合的问题 - Angular JS ng-repeat consumes more browser memory
所以我有自己的ng-repeat,大大减少了内存使用量:
但我可以在自定义ng-repeat指令中使用类似于上面ng-repeat的filter
和limitTo
选项吗?
注意:内部重复并不总是限制为5.我有内部滚动内部ng-repeat并且内部滚动到达时有一个watch
结束,增加限制5。
非常感谢任何帮助!
我最接近的是: http://jsfiddle.net/WqSGR/29/
但是有人可以帮助我们在searchText
上应用手表以便过滤器有效吗?
答案 0 :(得分:1)
是的,您可以在链接功能中使用过滤器:
myApp.directive('myRepeater', function(filterFilter, limitToFilter) {
return {
restrict: 'A',
link: function(scope, element, attrs) {
var myTemplate = "<div>{{rating}}</div>";
var filteredItems = filterFilter(scope.items, scope.SearchText);
var limitedItems = limitToFilter(filteredItems, 5);
angular.forEach(limitedItems, function(item){
var text = myTemplate.replace("{{rating}}",item.rating);
element.append(text);
});
}
};
});
然后,您可以通过创建$ watchers来观察scope.SearchText
和scope.NumberOfItems
上的更改,从而继续相应地更新列表。