$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个汽车结果,但随后其他项目消失。
答案 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">
当然,您可以扩展并执行更适合您的应用需求的操作。