20

根据

角度 1.1.5 - http://plnkr.co/edit/eoKt8o4MJw9sWdYdeG3s?p=preview - 工作

升级

角度 1.2.6 - http://plnkr.co/edit/WopgAtFNVm1mKf5Li99h?p=preview - 失败


我想我确实遵循了文档中的说明 - http://docs.angularjs.org/api/ngAnimate

• 首先在您的 HTML 中包含 angular-animate.js

• 然后通过将模块添加为依赖模块将其加载到您的应用程序中

在我的时区已经很晚了,我可能会错过一些明显的东西。我的猜测是 - 1.1.5 和 1.2.6 之间的 CSS 文件不兼容?真的说不出来...

无论如何,这里是代码形式的升级plunker,我添加了一些注释以强调我遵循了文档中的说明:

<!doctype html>
<html ng-app="app">
<head>
  <meta charset="utf-8">
  <title>Top Animation</title>
  <script>document.write('<base href="' + document.location + '" />');</script>
  <link rel="stylesheet" href="style.css">
  <link href="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.1/css/bootstrap-combined.min.css" rel="stylesheet">
  <script src="http://code.angularjs.org/1.2.6/angular.js"></script>
  <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.6/angular-animate.js"></script>
  <!-- ^^^ load animate -->
</head>

<script>
var app = angular.module('app', ['ngAnimate']); // <-- dependent module

app.controller('Ctrl', function($scope) {
  $scope.names = ['Igor Minar', 'Brad Green', 'Dave Geddes', 'Naomi Black', 'Greg Weber', 'Dean Sofer', 'Wes Alvaro', 'John Scott', 'Daniel Nadasi'];
});

</script>

<body ng-controller="Ctrl">
  <div class="well" style="margin-top: 30px; width: 200px; overflow: hidden;">
    <form class="form-search"> 
        <div class="input-append">
          <input type="text" ng-model="search" class="search-query" style="width: 80px">
          <button type="submit" class="btn">Search</button>
        </div>
        <ul class="nav nav-pills nav-stacked">
          <li ng-animate="'animate'" ng-repeat="name in names | filter:search">
            <a href="#"> {{name}} </a>
          </li> 
      </ul>
    </form>
  </div>
</body>
</html>

非常感谢您的帮助!

4

2 回答 2

36

这是您的 plunker 的工作版本... http://plnkr.co/edit/05irGvYwD4y9ZRb1ZHSw?p=preview

在 Angular 1.2+ 中,您不再需要声明 ng-animate 指令。动画可以单独使用 css 添加。所以对于你的例子,你可以删除 ng-animate 指令并给元素一个 css 类,所以改变......

<li ng-animate="'animate'" ng-repeat="name in names | filter:search">

to...

<li class="animate" ng-repeat="name in names | filter:search">

然后将您的CSS更新为...

.animate.ng-enter, 
.animate.ng-leave
{ 
...

.animate.ng-leave.animate.ng-leave-active,
.animate.ng-enter {
...

.animate.ng-enter.ng-enter-active, 
.animate.ng-leave {
...

Angular 会简单地将 ng-enter、ng-hide、ng-leave 等类添加到元素中,并在动画生命周期中适当地删除它们,这将触发 css 动画。在“使用”下的文档中有哪些指令支持哪些动画类的列表。在本例中,我们正在为 ng-repeat 设置动画,因此 ng-enter、ng-leave 和 ng-move 类将在适当的时候添加到我们的元素中,我们可以使用 css 将动画附加到它们。

于 2014-02-06T04:31:36.120 回答
2

我发现这个演示做得很好:http: //jsbin.com/usaruce/3/edit

它使用以下语法:

.todo-item {
  -webkit-transition: color 0.6s, background-color 0.3s;
  -moz-transition: color 0.6s, background-color 0.3s;
  -ms-transition: color 0.6s, background-color 0.3s;
  transition: color 0.6s, background-color 0.3s;
}
.todo-item.ng-enter {
  -webkit-animation: fadeInLeft 1s;
  -moz-animation: fadeInLeft 1s;
  -ms-animation: fadeInLeft 1s;
  animation: fadeInLeft 1s;
}
.todo-item.ng-leave {
  -webkit-animation: bounceOut 1s;
  -moz-animation: bounceOut 1s;
  -ms-animation: bounceOut 1s;
  animation: bounceOut 1s;
}

它还利用了animate.css (fadeInLeft,bounceOut)

于 2014-04-08T17:19:04.513 回答