angularjs - Angular 1.4 中的 ngRepeat 动画

标签 angularjs animation angularjs-ng-repeat ng-animate

我想在 Angular JS 1.4.0 中实现动画,我希望它与可以在此页面上找到的动画相似(Angular 1.1.5):
http://www.nganimate.org/angularjs/ng-repeat/move

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

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

由于不同的过滤器输入,我希望显示和隐藏的项目使用 css 动画进行动画处理。

这是我的过滤器输入:

<input type="text" class="form-control" ng-model="search">

这是列表,其中显示了搜索中的所有元素。
<ul>
    <li ng-class="item" ng-repeat="name in people | filter:search">
         <a href="#"> {{name.name}} </a>
    </li>
</ul>

这是我的 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;
}

搜索和过滤器工作正常,但没有触发 CSS 动画。

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

最佳答案

像 angular 1.4 这样的最新版本,方法有点不同。首先,您应该包括 Angular 动画 js。

<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.4.0-rc.2/angular-animate.js"></script>

然后你应该像这样将'ngAnimate'注入(inject)模块。
var app = angular.module('myApp', ['ngAnimate']);

也使用这样的类和 ng-repeat
<li class="animate-repeat" ng-repeat="friend in friends | filter:q as results">

也使用 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;
}

more references

关于angularjs - Angular 1.4 中的 ngRepeat 动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30868686/

相关文章:

javascript - AngularJS : Replicate div on click of button

javascript - 用于验证范围内的十进制值的正则表达式是什么 - 0 到 99999.00

javascript - 错误: Unknown provider: PopupProvider <- Popup

javascript - 动态更改 ng-repeat 元素的宽度

html - FlexSlider:从显示图像更改为显示文本的方法?

Android alpha动画淡入淡出延迟

javascript - Angularjs 使用下拉列表过滤数据

html - CSS 动画不适用于所有浏览器

javascript - 使用 ng-repeat 将按不同类别排序的所有项目打印到行中

javascript - 为什么这个 Angular 模型没有被完全覆盖?