我有一个过滤器,它正在删除我所拥有的ng-repeater中的重复项。我需要能够显示值旁边的数组中的值。
E.g。如果我有一个阵列['休斯顿','休斯顿','达拉斯' ]
页面上的值如下:houston(2),dallas(1)
我以为我有一个解决方案,但我得到了角度错误,因为我正在返回一个数组,而不是我原来的项目。我基本上将项目推送到数组中作为[item,1],其中一个是它被看到的次数。我会创建if语句的else部分,我将增加该数量,但不会去。
需要一些如何使其发挥作用的想法。
这是我创建的过滤器
.filter('unique', function() {
return function(collection, keyname) {
var output = [],
keys = [];
angular.forEach(collection, function(item) {
var key = item[keyname];
if(keys.indexOf(key) === -1) {
keys.push(key);
output.push(item);
}
});
return output;
};
});
这是带有我的过滤器的ng-repeater。 (注意我添加了{{value}}我需要的项目数量)
<li ng-repeat="info in search.hits | unique: 'type'">
<a>{{ info.type }} {{ value }}</a>
</li>
谢谢!
答案 0 :(得分:1)
这很简单。
添加一个这样的计数器
.filter('unique', function() {
return function(collection, keyname) {
var output = [];
angular.forEach(collection, function(item) {
var obj = output.filter(function(x) {
return x[keyname] == item[keyname];
});
if (obj.length > 0)
obj.count += 1;
else {
item.count = 1;
output.push(item);
}
});
return output;
};
});
查看:
<li ng-repeat="info in search.hits | unique: 'type'">
<a>{{ info.type }} {{ info.count || 0 }}</a>
</li>