无法在嵌套的ngRepeat上触发动画

Pip*_*ipo 5 javascript css angularjs angularjs-ng-repeat ng-animate

我无法弄清楚如何使用Angular在嵌套的ngRepeat上触发动画.

CSS类".test"是动画的.在内部ngRepeat上使用".test"时,它不起作用(Plunker):

<div ng-repeat="section in sections">
  <div ng-repeat="item in section.items" class="test">
    <h2>{{item.title}}</h2>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

在外部ngRepeat上使用".test"时,它确实有效(Plunker):

<div ng-repeat="section in sections">
  <div ng-repeat="item in section.items" class="test">
    <h2>{{item.title}}</h2>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

PSL*_*PSL 15

您可能需要在父容器上添加ngAnimateChildren属性,并更新css.

尝试:-

<div ng-repeat="section in sections" ng-animate-children>
  <div ng-repeat="item in section.items" class="test">
    <h2>{{item.title}}</h2>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

.test.ng-move,
.test.ng-enter,
.test.ng-leave {
  -webkit-transition: all 0.3s  ease-out;
    transition: all 0.3s  ease-out;
}

.test.ng-leave.ng-leave-active,
.test.ng-move,
.test.ng-enter {
   opacity:0;
   -webkit-transform: translate(-20px, 0);
    transform: translate(-20px, 0);
}

.test.ng-leave,
.test.ng-move.ng-move-active,
.test.ng-enter.ng-enter-active {
 opacity:1;
   -webkit-transform: translate(0, 0);
    transform: translate(0, 0);
}
Run Code Online (Sandbox Code Playgroud)

Plnkr

文档中找到了这个

请记住,默认情况下,如果动画正在运行,则在父元素的动画完成之前,不能对任何子元素进行动画处理.可以通过将ng-animate-children属性放在父容器标记上来覆盖此阻止功能.

尽管父重复上没有动画,但似乎ng-animate只是忽略了其子节点上的任何动画.

  • 哇,之前从未听说过ng-animate-children.我以前从未在文档中看过这个.这绝对解决了这个问题.非常感谢你. (3认同)