1

我正在使用角度 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)中的表达式并且它有效,但我完全不理解它。

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

4

1 回答 1

1

在较新版本的 Angular 中,它不允许在列表/对象中重复,因此要从对象中删除此重复项,您可以通过使用唯一 ID 引用它们来区分所有项目(通过 $id(key) 跟踪)。即你正在做的是正确找出重复错误。

于 2013-06-19T08:21:47.353 回答