将limitTo仅应用于特定的一组项目

时间:2014-05-13 05:13:28

标签: javascript angularjs

$scope.items = [
    {"name":"laptop","color":"green"},
    {"name":"shoe","color":"blue"},
    {"name":"Car","color":"gold"},
    {"name":"Car","color":"gold"},
    {"name":"Car","color":"gold"}
];

如何将包含name ='car'的项目限制为2,但在ng-repeat中保持其他项目不受影响?如果我执行<li ng-repeat="item in items | filter: {name: 'car'} | limitTo: 2">,它将返回2个汽车结果,但随后其他项目消失。

1 个答案:

答案 0 :(得分:4)

您的情景听起来更像是与商业逻辑相关的东西&#34;而不是框架应该包含的功能。尝试实施自己的自定义过滤器。

接近的地方:

自定义过滤器

angular.module('myApp', []).filter('myFilter', function() {
  return function(items, param1, param2) {
    return items.reduce(function(a,c){  var count = a.filter(function(item){ return item.name ===param1; }).length; if(count<param2 || c.name !== param1 ) a.push(c); return a;},[]);
  };
});

并在 html

 <li ng-repeat="item in items | myFilter:'car': 2">

当然,您可以扩展并执行更适合您的应用需求的操作。

这是plunker demo