angularJs唯一过滤器 - 没有得到唯一的数组长度

时间:2016-04-01 08:08:54

标签: angularjs angularjs-ng-repeat angularjs-filter

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长度)。

2 个答案:

答案 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此过滤器返回一个新的对象数组。因此它不会改变你的原始对象。