【问题标题】:Custom Filter and LimitTo options with Custom ng-repeat directive带有自定义 ng-repeat 指令的自定义过滤器和 LimitTo 选项
【发布时间】:2013-07-04 06:06:28
【问题描述】:

我有以下代码,其中我有一个 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 选项吗?

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

非常感谢任何帮助!

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

但是有人可以帮助解决如何在searchText 上应用手表以使过滤器正常工作吗?

【问题讨论】:

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


    【解决方案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 上的更改以相应地更新列表。

    【讨论】:

    • 非常感谢@Stewie!你能帮我过滤filterFilter和limitToFilter吗?或者你能提供一些指导吗?
    • 我尝试了以下方法:jsfiddle.net/WqSGR/29 但是您能帮我解决如何在 searchText 上应用 watch 以便更新结果吗?
    • 太棒了!感谢你的帮助!这是我对 limitTo 选项的最后小提琴:jsfiddle.net/SsnPb/1 当内部滚动到达结束时,我将相应用户范围的限制增加 4,我希望应用它并且结果集增加..你能帮我吗同样..再次感谢您的帮助..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-06
    • 2013-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    相关资源
    最近更新 更多