ng-repeat在1.1.1和1.1.5之间的差异

时间:2013-06-19 08:13:35

标签: angularjs

我正在使用棱角1.1.5。在我的代码中,我正在读取一个带有一个对象数组的json对象。每个对象都有一个属性,表示标签列表为空格分隔列表。我正在计算自定义过滤器中的出现次数,并使用ng-repeat输出结果。没什么复杂的。

但1.1.1和1.1.5之间似乎存在差异。

我的ng-repeat表达式:

(key, value) in (r.items | extractLabels:'labels')

它适用于角1.1.1。见http://jsfiddle.net/waxolunist/vQyCn/

它不适用于角1.1.5。见http://jsfiddle.net/waxolunist/vQyCn/8/

我收到以下错误:Duplicates in a repeater are not allowed.

但它适用于对代码的以下修改:

(key, value) in (r.items | extractLabels:'labels') track by $id(key)

请参阅http://jsfiddle.net/waxolunist/vQyCn/9/

我读到了本文档中的track by表达式(http://code.angularjs.org/1.1.5/docs/api/ng.directive:ngRepeat)并且它有效,但我完全不理解。

有人可以向我解释一下,我在这做什么?我做得对吗?为什么会有这种差异?

1 个答案:

答案 0 :(得分:1)

在较新版本的angular中,它不允许在列表/对象中进行复制,因此要从对象中删除此复制,您可以使用unique-id(跟踪$ id(键))来区分所有项目。即你正在做的是找出重复错误的正确方法。