Javascript 过滤ng repeat时停止angularjs中的动画

Javascript 过滤ng repeat时停止angularjs中的动画,javascript,html,angularjs,ng-animate,Javascript,Html,Angularjs,Ng Animate,当将注释列表加载到名为Notes的scope数组中时,我有一个角度web应用程序 此列表在ng重复中过滤,如下所示: 我的问题是过滤器,正如您所看到的,列表是通过一个名为propertyFitler的自定义过滤器过滤的,该过滤器根据用户选择的“选项卡”过滤注释 这是一个简单的UL: 当用户单击其他选项卡时,项目的动画将启动,而不是简单地立即过滤列表 如何在列表中设置新项目的动画,但是当用户通过LI项目过滤列表时,不要在列表中设置更改的动画?您可以将$animate服务注入控制器,然后,无论您有什

当将注释列表加载到名为Notes的scope数组中时,我有一个角度web应用程序

此列表在ng重复中过滤,如下所示:

我的问题是过滤器,正如您所看到的,列表是通过一个名为propertyFitler的自定义过滤器过滤的,该过滤器根据用户选择的“选项卡”过滤注释

这是一个简单的UL:

当用户单击其他选项卡时,项目的动画将启动,而不是简单地立即过滤列表


如何在列表中设置新项目的动画,但是当用户通过LI项目过滤列表时,不要在列表中设置更改的动画?

您可以将$animate服务注入控制器,然后,无论您有什么用于单击选项卡的回调,都应该首先调用$animate.enabledfalse。这将禁用动画。然后只要在页面刷新后调用$animate.enabledtrue即可。知道何时再次启用动画可能是一个棘手的部分。最简单的方法是使用$timeout禁用动画半秒钟左右。如果你不喜欢,那么有一些关于ngRepeat何时完成工作的博客帖子。或者可能有一个我没有考虑过的非常明显且干净的解决方案。

您可以将$animate服务注入控制器中,然后无论您有什么用于单击选项卡的回调,都应该首先调用$animate.enabledfalse。这将禁用动画。然后只要在页面刷新后调用$animate.enabledtrue即可。知道何时再次启用动画可能是一个棘手的部分。最简单的方法是使用$timeout禁用动画半秒钟左右。如果你不喜欢,那么有一些关于ngRepeat何时完成工作的博客帖子。或者可能有一个我没有考虑过的非常明显且干净的解决方案。

那么我该如何准确地使用它呢?当用户单击列表项时,是否需要设置noAnimate=true,然后更改selectedTab属性?我对服务装潢师不太熟悉…好的,取消我上次的。新的答案要简单得多。这似乎起到了作用,不幸的是,我不得不添加超时,这有点像黑客,但在我的情况下是有效的。那么我该如何准确地使用它呢?当用户单击列表项时,是否需要设置noAnimate=true,然后更改selectedTab属性?我对服务装潢师不太熟悉…好的,取消我上次的。新的答案要简单得多。这似乎起到了作用,不幸的是,我不得不添加超时,这有点像黑客,但在我的情况下是有效的
<div class="noteClass" ng-repeat="n in notes | propertyFilter: 'Fields.noteTabNumber' : selectedTab">
div.noteClass.ng-enter,
div.noteClass.ng-leave,
div.noteClass.ng-move {
    //my animations here
}

div.noteClass.ng-enter,
div.noteClass.ng-move
 {
    //my further animation functions
}

div.noteClass.ng-enter.ng-enter-active,
div.noteClass.ng-move.ng-move-active {
    /// finished animations
}
<ul>
    <li ng-class="{selected: selectedTab==1}">...</li>
    <li ng-class="{selected: selectedTab==2}">...</li>
    <li ng-class="{selected: selectedTab==3}">...</li>
</ul>