Custom ng-repeat指令的Custom Filter和LimitTo选项

时间:2013-07-06 07:18:54

标签: javascript angularjs angularjs-directive angularjs-scope angularjs-ng-repeat

我有以下代码,我有一个nested ng-repeat,并在内部ng-repeat中使用filterlimitTo个选项

http://jsfiddle.net/WqSGR/27/

这里我的套装中的物品非常少。但在我的实际案例中,我在外圈和内圈都有大约1000个项目。但是我遇到了使用ng-repeats进行大集合的问题 - Angular JS ng-repeat consumes more browser memory

所以我有自己的ng-repeat,大大减少了内存使用量:

http://jsfiddle.net/WqSGR/28/

但我可以在自定义ng-repeat指令中使用类似于上面ng-repeat的filterlimitTo选项吗?

注意:内部重复并不总是限制为5.我有内部滚动内部ng-repeat并且内部滚动到达时有一个watch结束,增加限制5。

非常感谢任何帮助!

我最接近的是: http://jsfiddle.net/WqSGR/29/

但是有人可以帮助我们在searchText上应用手表以便过滤器有效吗?

1 个答案:

答案 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.SearchTextscope.NumberOfItems上的更改,从而继续相应地更新列表。