AngularJS按表达式跟踪可添加和删除项目的列表

时间:2014-06-30 08:09:15

标签: angularjs angularjs-ng-repeat

是否有一种很好的方法可以将track by ng-repeat功能用于可编辑列表,即用户可以删除和添加项目的列表?

现有对象已分配唯一ID,而缺少ID是我在表单提交时创建该项目的标记。

只要用户只将元素添加到列表中,使用track by $index就会起作用。 只要用户只删除或更改列表中的项目,就可以使用track by myId

我能看到实现该行为的唯一方法是将临时随机ID分配给每个新项的属性,并使用scope方法返回实际ID或临时ID,无论存在什么。看起来不那么优雅......

我可以想象这是一个相当常见的用例,有更优雅的方法来处理这个吗?

2 个答案:

答案 0 :(得分:0)

我经常在我的模型中添加一个属性cid(client-id)。我在获取模型或创建新模型时分配属性,以便每个模型都有cid。然后我可以做类似的事情:

<ul>
<li ng-repeat="for item in list track by item.cid">{{ item.name }}</li>
</ul>

答案 1 :(得分:0)

试试这个:

item in items track by $id(item)