https://github.com/a8m/angular-filter/
我使用上面的Angularjs过滤器库在ng-repeat中使用唯一属性。
下面是我的代码
<div class="rankblock" ng-repeat="item in sports.Ranks.Rank |unique:'_position'>
<span> {{sports.Ranks.Rank.length}}</span> //
</div>
在ng-repeat中唯一后,我的Rank数组长度变为6但在输出中仍显示9(原始Arr长度)。
答案 0 :(得分:3)
过滤器内部返回ng-repeat
个新数组。这是过滤器的想法 - 过滤但避免改变输入。换句话说:
ng-repeat="item in sports.Ranks.Rank | unique:'_position'
说ng-repeat要经过过滤函数的结果,这是一个没有重复的新数组,在这里
<span> {{sports.Ranks.Rank.length}}</span>
你仍然读取原始长度。
如果要显示新的数组长度,可以执行以下操作:尝试以下
{{ (sports.Ranks.Rank | unique:'_position').length }}
(从未做过类似的事情,也许这样做),但这仍然不是一个高效的解决方案。实际上,我要做的是在控制器级别上进行重复数据删除。
答案 1 :(得分:1)
正如您可以参考https://github.com/a8m/angular-filter/blob/master/src/_filter/collection/unique.js此过滤器返回一个新的对象数组。因此它不会改变你的原始对象。