0

我有以下代码,其中我有一个nested ng-repeat并且还在内部 ng-repeat 中使用filter和选项limitTo

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

在这里,我的套装中的物品非常少。但在我的真实案例中,我在外循环和内循环中都有大约 1000 个项目。但是我在使用 ng-repeat 处理大量数据时遇到了问题-Angular JS ng-repeat 会消耗更多的浏览器内存

所以我有我自己的 ng-repeat,它减少了相当多的内存使用:

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

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

注意:内部 ng-repeat 并不总是限制为 5。我有内部 ng-repeat 的watch内部滚动,并且当内部滚动到达结束时,将限制增加 5。

任何帮助深表感谢!

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

但是有人可以帮助如何在过滤器上应用监视以searchText使过滤器起作用吗?

4

1 回答 1

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相应地更新列表。

于 2013-07-06T13:06:32.227 回答