Как использовать ng-animate в angular 1.2?
База
angular 1.1.5 - http://plnkr.co/edit/eoKt8o4MJw9sWdYdeG3s?p=preview - РАБОТЫ
повысил
angular 1.2.6 - http://plnkr.co/edit/WopgAtFNVm1mKf5Li99h?p=preview - FAIL
Я думаю, что я выполнил инструкции из документов - http://docs.angularjs.org/api/ngAnimate
• Сначала включите angular -animate.js в свой HTML
• Затем загрузите модуль в приложение, добавив его как зависимый модуль
Это довольно поздно в моем часовом поясе, и я, вероятно, пропущу что-то очевидное. Мое предположение: CSS файл между 1.1.5 и 1.2.6 не совместим? Не могу сказать...
В любом случае, это форма кода повышена, я включил некоторые комментарии, чтобы подчеркнуть, что я следовал инструкциям из документов:
<!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>
Большое спасибо за помощь!
Ответы
Ответ 1
Вот рабочая версия вашего плункера... 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. Существует список тех директив, которые поддерживают классы анимации в docs в разделе "Использование". В этом примере мы анимации ng-repeat, поэтому классы ng-enter, ng-leave и ng-move будут добавлены в наш элемент в соответствующее время, и мы сможем привязать их к ним css.
Ответ 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)