【发布时间】:2013-12-13 03:58:11
【问题描述】:
我正在构建一个具有“播放列表”功能的应用程序。这表示为带有 ng-repeat = "element in playlist"
因为我想允许用户在播放列表中重复使用相同的元素两次,所以我尝试使用 track by $index 添加。
现在,令人困惑的是:当我从播放列表中删除一个元素时(我有一个函数removeElement(index),它基本上包含这样的内容:
$scope.removeElement = function(index){
$scope.playlist.splice(index, 1);
}
发生了一些奇怪的事情:该元素已从 $scope.playlist 中正确删除,但由于某种原因视图没有正确更新。最后一个元素似乎已被删除。
此外,我也无法正确地重新排列数组中的元素。
当我删除track by $index 时,这个问题就消失了,所以我认为这是因为当你从数组中删除一个项目时,如果你只查看索引,那么看起来你刚刚删除了最后一个。
这种行为很奇怪,因为已正确删除了嵌入的内容 -- see this plunker
编辑: 上面的链接已被修改以更好地显示问题并显示我确定的答案。
这个问题也经过了轻微的编辑,以便更清楚地说明我的意思。 KayakDave 在下面的回答仍然是正确的,但更适合一组原语(我原来的 plunker 的特色)。
TL;DR:如何在ng-repeat 中放置重复元素而不牺牲控制其位置或正确删除元素的能力?
【问题讨论】:
标签: javascript angularjs angularjs-ng-repeat