角度1.4的ngRepeat动画

kac*_*ase 6 animation angularjs angularjs-ng-repeat ng-animate

我想在Angular JS 1.4.0中实现一个动画,我希望它类似于一个,可以在这个页面上找到(Angular 1.1.5):http: //www.nganimate.org/ angularjs/NG重复/移动

据我所知,ngAnimate在过去的几个版本中发生了重大变化.

我用Plunkr重新创建了我的应用程序的重要部分.它可以在这里找到http://plnkr.co/edit/9DK3LEAaGDgDT2kIILjG?p=preview

我希望显示和隐藏的项目,因为不同的过滤器输入,使用css动画进行动画制作.

这是我的过滤器输入:

<input type="text" class="form-control" ng-model="search">
Run Code Online (Sandbox Code Playgroud)

这是列表,其中显示搜索中的所有元素.

<ul>
    <li ng-class="item" ng-repeat="name in people | filter:search">
         <a href="#"> {{name.name}} </a>
    </li>
</ul>
Run Code Online (Sandbox Code Playgroud)

这是我的CSS动画:

.item.ng-enter, 
.item.ng-leave
{ 
    -webkit-transition: 400ms cubic-bezier(0.250, 0.250, 0.750, 0.750) all;
    -moz-transition: 400ms cubic-bezier(0.250, 0.250, 0.750, 0.750) all;
    -ms-transition: 400ms cubic-bezier(0.250, 0.250, 0.750, 0.750) all;
    -o-transition: 400ms cubic-bezier(0.250, 0.250, 0.750, 0.750) all;
    transition: 400ms cubic-bezier(0.250, 0.250, 0.750, 0.750) all;
    position: relative;
    display: block;
} 

.item.ng-enter.item.ng-enter-active, 
.item.ng-leave {
    opacity: 1;
    top: 0;
    height: 30px;
}

.item.ng-leave.item.ng-leave-active,
.item.ng-enter {
    opacity: 0;
    top: -50px;
    height: 0px;
}
Run Code Online (Sandbox Code Playgroud)

搜索和过滤器工作正常,但不会触发CSS动画.

如果有人能解决这个问题,我会很高兴的!

Jai*_*son 9

像angular 1.4这样的最新版本的方法有点不同.首先,你应该包括角度动画js.

<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.4.0-rc.2/angular-animate.js"></script>
Run Code Online (Sandbox Code Playgroud)

然后你应该像这样将'ngAnimate'注入模块.

var app = angular.module('myApp', ['ngAnimate']);
Run Code Online (Sandbox Code Playgroud)

也可以像ng-reapeat一样使用这样的类

<li class="animate-repeat" ng-repeat="friend in friends | filter:q as results">
Run Code Online (Sandbox Code Playgroud)

也可以像下面一样使用css进行动画制作

    .animate-repeat {
  line-height:40px;
  list-style:none;
  box-sizing:border-box;
}

.animate-repeat.ng-move,
.animate-repeat.ng-enter,
.animate-repeat.ng-leave {
  -webkit-transition:all linear 0.5s;
  transition:all linear 0.5s;
}

.animate-repeat.ng-leave.ng-leave-active,
.animate-repeat.ng-move,
.animate-repeat.ng-enter {
  opacity:0;
  max-height:0;
}

.animate-repeat.ng-leave,
.animate-repeat.ng-move.ng-move-active,
.animate-repeat.ng-enter.ng-enter-active {
  opacity:1;
  max-height:40px;
}
Run Code Online (Sandbox Code Playgroud)

更多参考