Angularjs ng重复不处理包含重复项的集合

Angularjs ng重复不处理包含重复项的集合,angularjs,dart,angular-dart,Angularjs,Dart,Angular Dart,以下代码不工作,因为集合包含重复项: <div ng-repeat="value in [4, 4]"></div> 我认为以下措施应该有效,但不幸的是,这些措施不起作用: <div ng-repeat="value in [4, 4] track by $index"></div> 那是虫子吗 是否有方法在包含重复项的集合上使用ng repeat 提前感谢, Olivier此功能已在较新版本中添加到AngularJS中。 关键是,基本

以下代码不工作,因为集合包含重复项:

<div ng-repeat="value in [4, 4]"></div>

我认为以下措施应该有效,但不幸的是,这些措施不起作用:

<div ng-repeat="value in [4, 4] track by $index"></div>

那是虫子吗

是否有方法在包含重复项的集合上使用
ng repeat

提前感谢,


Olivier

此功能已在较新版本中添加到AngularJS中。 关键是,基本上不应该迭代某些基本类型(例如数字),而应该迭代某些复杂对象

据我所知,
ngRepeat
指令检查的是引用,而不是实际值,因此,如果对一些复杂对象进行迭代,它会起作用,但如果尝试对一组基本类型进行迭代,则很可能无法工作,只要“所有”值彼此不同

编辑

以下几行是从中复制和粘贴的(请确保您使用的是相对最新的AngularJS版本-我使用的是1.1.5,它工作得非常好-)

说明

在ngRepeat表达式中存在重复键时发生。重复键被禁止,因为AngularJS使用键将DOM节点与项关联

默认情况下,集合由引用设置关键帧,这对于大多数常见的模型来说是可取的,但是对于插入的基元类型(共享引用)来说可能会有问题

例如,该问题可能由以下无效代码触发:

<div ng-repeat="value in [4, 4]">
</div>

要解决此错误,请确保集合中的项具有唯一的标识,并使用track by语法指定如何跟踪模型和DOM之间的关联

要解决上面的示例,可以使用track by$index来解决,这将导致项目按其在数组中的位置而不是其值设置关键帧:

<div ng-repeat="value in [4, 4] track by $index"></div>


您可以做的一件事是添加“track by$index”,如angular中所示,这将把跟踪逻辑更改为元素的索引,而不是元素的值,但这将显示重复的值。要仅显示唯一值,可以通过编写以下函数过滤掉唯一值:

    var uniqueValues = function(data){
        var check = {};
        var uniqueValue = [];
        for(i-0;i<data.length;i++){
           if(!check[data[i]]){
              uniqueValue.push(data[i]);
              check(data[i]) = true;
           }
        }
        return uniqueValue;
}
var uniqueValues=函数(数据){
var-check={};
var uniqueValue=[];

对于(i-0;i),Angular Filter第三方文件管理器包含一个“唯一”过滤器,该过滤器将为您提供集合中唯一的条目

用法:


集合| unique:'property'

可以,但是,'track by$index'应该对int-no起作用吗?
track by$index
似乎已经实现了