为AngularJS ngRepeat中的移动设置动画是为错误的项目设置动画

为AngularJS ngRepeat中的移动设置动画是为错误的项目设置动画,angularjs,angularjs-ng-repeat,ng-animate,Angularjs,Angularjs Ng Repeat,Ng Animate,当涉及到在ng重复中设置ng移动动画时,我有点不知所措。例如,如果我将一个数组项从3移动到7,则项目4-7将上移,并设置动画。然而,我从3移到位置7的实际项目没有。这是一个演示我的问题的弹片 但是,将项目7移动到项目3的效果与我预期的一样,即为单个移动的项目设置动画,而不是为已按下的项目设置动画 这对于向用户显示移动的内容不是很有用。应该如何正确地设置ng移动的动画?正确的语法是 arrayVar.splice(to, 0, arrayVar.splice(from, 1)); 要删除并返回

当涉及到在ng重复中设置ng移动动画时,我有点不知所措。例如,如果我将一个数组项从3移动到7,则项目4-7将上移,并设置动画。然而,我从3移到位置7的实际项目没有。这是一个演示我的问题的弹片

但是,将项目7移动到项目3的效果与我预期的一样,即为单个移动的项目设置动画,而不是为已按下的项目设置动画

这对于向用户显示移动的内容不是很有用。应该如何正确地设置ng移动的动画?

正确的语法是

arrayVar.splice(to, 0, arrayVar.splice(from, 1));

要删除并返回数组
arr
索引
i
处的元素,请使用
arr.splice(i,1)

@tasseKat有一个很好的答案,它解释了您观察到的行为:


然而,他的解决方案并不像你希望的那么简单。。。但到目前为止,我还没有找到更好的答案。

谢谢你的快速回答。不幸的是,这似乎起了作用,因为它触发了ng进入和ng离开。我更新了plunkr以不同的方式显示动画。@Chris,我没有得到它。我想我的办法仍然有效。通过返回array.splice(i,1),您不需要
[0]
,您返回的是数组,而不是元素。这将触发ng LEVE/ng enter,而不是AngularJS中的ng move转换。plunkr只是我能做的最简单的例子,用来说明ng move(在我的真实代码中,它实际上是在排序期间触发的)并没有为实际移动的项目设置动画。我更新了plunkr,将离开/进入/移动显示为红色/绿色/蓝色。蓝色动画是我的问题。很抱歉搞混了克里斯,这方面有进展吗?没有,对不起。我最终在github上发现了这个问题,但我从未得到令人满意的解决方案。使用(评级极低)术语“flummoxed”的投票