从角度1.4的$ animateCss获取返回的承诺

时间:2015-06-23 10:51:41

标签: angularjs animation ng-animate

如何从代码中的任何位置检索此动画的承诺?

angular.module('module', ['ngAnimate'])
    .animation('.notification', ['$animateCss', function($animateCss) {
        return {
            enter : function(element, done) {
                return $animateCss(element, {
                    // Animation options
                }
            }
        }
    );

使用dom元素上的ng-if之类的东西成功触发动画。

<div class="notification" ng-if="notifier.active">...</div>

如何在不手动调用enter方法的情况下获得承诺?

3 个答案:

答案 0 :(得分:1)

您可以创建服务:

    animationServices.animateCss().then(function(data){

       //some code
    });

然后注册您的服务并从以下任何地方调用它:

mysqli_connect('localhost', 'myuser','mypassword')

答案 1 :(得分:0)

创建一个新的promise并使用返回的对象中的promise属性立即使其可用,但是在调用enter函数并且动画完成之前不要解析它More information here.

    var deferredAnimation = $q.defer();
    return {
        enter: function(element, done) {
            $animateCss(element, {
                // Animation options
            }).then(function() {
                deferredAnimation.resolve();
            });
        },
        promise: deferredAnimation.promise
    }

答案 2 :(得分:0)

你试过吗?

var animation = $animateCss(element, {
    // Animation options
});
var promise = animation.start().getPromise();

- 编辑 -

请记住,如果您希望JS动画仍然可以运行,您需要执行以下操作:

var animator = animation.start();
var promise = animator.getPromise();
return animator;