【发布时间】:2015-10-23 08:36:43
【问题描述】:
angular-animate 1.4.3 出现问题...指令的离开动画效果很好,但进入动画效果不行;据我所见,ng-enter 和 ng-enter-active 类并未应用于该元素。为什么是这样? Here's a plunkr of it
script.js
(function() {
'use strict';
// ---------------Module----------------
angular.module('app', ['ngAnimate'])
.run(['fooService', function(fooService) {
fooService.foo('Hello World!');
}]);
// --------------Service----------------
function fooService($rootScope, $compile, $animate, $timeout) {
function createDirective(message) {
var newFoo = {
scope: $rootScope.$new()
};
var target = angular.element(document.querySelector('#bar'));
var elem = angular.element(document.createElement('foo'));
newFoo.scope.message = message;
newFoo.elem = $compile(elem)(newFoo.scope);
$animate.enter(newFoo.elem, target).then(function() {
$timeout(function() {
removeDirective(newFoo);
}, 3000);
});
}
function removeDirective(foo) {
$animate.leave(foo.elem).then(function() {
foo.scope.$destroy();
});
}
function foo(message, overrides) {
return createDirective(message);
}
return {
foo: foo
};
}
fooService.$inject = ['$rootScope', '$compile', '$animate', '$timeout'];
angular.module('app')
.factory('fooService', fooService);
// -------------Directive---------------
function fooDirective() {
return {
restrict: 'AE',
replace: true,
templateUrl: 'foo.html',
link: function(scope) {
}
}
}
angular.module('app')
.directive('foo', fooDirective);
}());
foo.html
<div class="alert alert-success">
{{message}}
</div>
index.html
<!DOCTYPE html>
<html ng-app="app">
<head>
<link data-require="bootstrap-css@3.3.1" data-semver="3.3.1" rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css" />
<script data-require="angular.js@~1.4.3" data-semver="1.4.3" src="https://code.angularjs.org/1.4.3/angular.js"></script>
<script data-require="angular-animate@1.4.3" data-semver="1.4.3" src="https://code.angularjs.org/1.4.3/angular-animate.js"></script>
<link rel="stylesheet" href="style.css" />
<script src="script.js"></script>
</head>
<body>
<div id="bar"></div>
</body>
</html>
style.css
.ng-leave, .ng-enter {
transition: all 1s ease-out;
}
.ng-enter.ng-enter-active, .ng-leave {
opacity: 1;
}
.ng-enter, .ng-leave.ng-leave-active {
opacity: 0;
}
感谢任何帮助
【问题讨论】:
标签: javascript css angularjs ng-animate