我想对数组执行ng-repeat,当它们与前一次迭代重复时跳过某些属性。
[
{
"id": "event1",
"date": "June 1st"
},
{
"id": "event2",
"date": "June 2nd"
},
{
"id": "event3",
"date": "June 2nd"
},
{
"id": "event4",
"date": "June 3rd"
}
]
您可以看到event2
和event3
...
<div ng-repeat="event in events">
<h2>{{event.date}}</h2>
<p>{{event.id}}</p>
<hr>
</div>
所以期望的结果是:
6月1日
事件1
6月2日
事件2
EVENT3
6月3日
EVENT4
我的猜测是这样的:
<div ng-repeat="event in events">
<h2 ng-if="<!--expression here-->">{{event.date}}</h2>
<p>{{event.id}}</p>
<hr>
</div>
我的控制器中的函数是否附加到ng-if属性中调用的变量?
主要是,在这种情况下,我如何形成表达式来做我想做的事情?
注意:我只想渲染 date 变量,而不是整个ng-repeat元素。
任何帮助或其他建议都将不胜感激。
答案 0 :(得分:0)
您可以创建自定义过滤器来过滤掉唯一的项目:
app.filter('uniq', function() {
return function(items, param) {
var filteredItems = [];
items.forEach(function(item) {
var found = filteredItems.some(function(elem) {
return elem.param === item.param;
});
if(!found) {
filteredItems.push(item);
}
});
return filteredItems;
}
});
像这样使用:
event in events | uniq: 'date'