Angularjs 设置元素在列表之间移动的动画
使用AngularJS,我想为从一个列表添加到另一个列表的元素设置动画,因为在元素的克隆中,该元素应该显示为从项目菜单在页面中移动,并添加到目标列表Angularjs 设置元素在列表之间移动的动画,angularjs,design-patterns,angularjs-directive,angularjs-animation,Angularjs,Design Patterns,Angularjs Directive,Angularjs Animation,使用AngularJS,我想为从一个列表添加到另一个列表的元素设置动画,因为在元素的克隆中,该元素应该显示为从项目菜单在页面中移动,并添加到目标列表 <ul class="list"> <li ng-click="choose(item)" ng-repeat="item in originItems">{{item.name}}</li> </ul> <ul class="list"> <li ng-repeat="it
<ul class="list">
<li ng-click="choose(item)" ng-repeat="item in originItems">{{item.name}}</li>
</ul>
<ul class="list">
<li ng-repeat="item in targetItems track by $index">{{item.name}}</li>
</ul>
你可以
我考虑过自定义指令和事件,但实际上没有取得任何进展。指令和/或事件的良好结构是什么,可以实现这种运动动画,使其与尽可能添加到列表的业务分离
注意:我在业务逻辑和动画方面的具体情况有点不同,但我希望解决方案足够灵活,允许在“移动”动画期间对菜单中的内容以及目标列表中的内容进行一些更改/添加。Demo
$event.target
标识原始项目我认为事情比仅仅使用动态动画功能复杂得多,所以谢谢!然而,有没有一种不依赖于ID的方法来实现这一点?有什么办法让目标物品“知道”它从哪里来?@MichalCharemza你不必使用物品的ID。您正在使用
$scope.targetItems.push(项目)
将同一项推入另一个数组,因此您可以使用=
进行检查。在您的示例中,您使用的是ID“#原始列表”。有没有一种方法可以让这更一般一些,不依赖ID。比如说,如果你在一个页面上有多个列表?@MichalCharemza抱歉,我误解了你。我刚刚更新了演示并删除了extractOriginalItem
函数。我使用$event.target
来标识原始项目元素。啊。。。在这方面更好。但是控制器必须访问$event。我希望在添加到数组的业务逻辑和动画的“糖”之间有更多的分离,因为我的实际情况会更复杂。
$scope.choose = function(item) {
$scope.targetItems.push(item);
}