我正在使用angular-drag-and-drop-lists并有一个我希望重新排序的简单项目列表。
我有这个工作,但我希望能够捕获正在移动的项目的旧索引位置和新索引位置。
我已经尝试使用dnd-moved
并dnd-inserted
按照下面的代码进行此操作。
标记:
<ul dnd-list="vm.route.stops"
dnd-inserted="vm.stopInserted(index)">
<li ng-repeat="stop in vm.route.stops"
dnd-draggable="stop"
dnd-moved="vm.stopMoved($index)"
dnd-effect-allowed="move">
<span>{{$index + 1}}.</span>
<md-card style="width:280px;">
<div layout="row">
{{stop.location}}
</div>
</md-card>
</li>
</ul>
控制器:
public stopMoved = (index: number) => {
const stop = this.route.stops[index];
console.log('Moved stop: ' + stop.name + ' from position: ' + index);
this.route.stops.splice(index, 1);
}
public stopInserted = (index: number) => {
const stop = this.route.stops[index];
console.log('Inserted stop: ' + stop.name + ' at position: ' + index);
}
我发现的问题是移动和插入停止时的输出索引值不是我所期望的。
我想我可能会遇到文档中提到的 dnd-inserted 属性的内容:
请注意,对于同一列表中的重新排序,旧元素仍将在列表中,因为尚未调用 dnd-moved
所以考虑一下我有四个项目添加到我的列表中。
然后我将“考文特花园”移到“滑铁卢桥”所在的位置:
控制台输出正确显示它是从索引 0 移动的,但说是在索引 3 处插入的(我希望它会说 2)
该dnd-inserted
函数在之前被调用dnd-moved
,它遵循我在上面从文档中进一步引用的引用。
如果我向另一个方向移动项目,从下到上,我会看到与捕获的索引类似的行为。
所以开始如下:
我将“Blackfriars”移动到“Southwark”所在的位置:
控制台输出内容如下:
我希望看到它已从索引 3 移出。
我可能误解了使用这个库的一些基本知识。是否有一种干净的方法来跟踪项目的旧索引位置和新索引位置,这些索引位置已被删除\插入到该库的垂直列表中?
谢谢