javascript - AngularJS 动画中的完成回调

标签 javascript animation angularjs callback

我有一个 AngularJS 动画...

app.animation('slide-show', function () {
    return {
        setup: function (element) {
        },
        start: function (element, done) {
            element.slideDown(400, done);
        }
    };
} );

app.animation('slide-hide', function () {
    return {
        setup: function (element) {
        },
        start: function (element, done) {
            element.slideUp(400, done);
        }
    };
} );

我希望能够提供一个额外的“完整”回调作为 start() 方法的参数,以便它可以被调用/传递给 jQuery方法。这是否可以通过动画指令以某种方式实现?

最佳答案

您已经传递了一个“完整”回调(element.slideUp() 的第二个参数),但是您没有使用自己的回调,而是简单地调用了done Angular 提供的功能。

您最终必须调用该函数,但没有什么能阻止您事先完成自己的工作。

app.animation('slide-hide', function () {
    return {
        setup: function (element) {
        },
        start: function (element, done) {
            element.slideUp(400, function () {
                // handle the end of the slideUp animation
                // ...

                // inform Angular that you're done
                done();
            });
        }
    };
});

如果你愿意,你可以概括这一点:

function AnimationCallback(done, callback, callbackArgs) {
    return function () {
        if (typeof callback === "function") {
            // 'this' will be the DOM element that just finished animating
            callback.apply(this, callbackArgs);
        }
        done();
    }
}

app.animation('slide-hide', function () {
    return {
        setup: function (element) {
        },
        start: function (element, done) {
            element.slideUp(400, new AnimationCallback(done, yourCallback));
        }
    };
});

其中 yourCallback 是您定义的任何函数,callbackArgs 是您要传递给它的可选参数数组。

关于javascript - AngularJS 动画中的完成回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16584761/

相关文章:

javascript - 如何在按键时从键盘触发事件?

c++ - vector 中 GPU 的骨骼权重

javascript - 既然我添加了计数器变量和间隔,为什么我的动画无法正常工作?

javascript - 滚动效果以更改每个新 div 元素的不透明度

javascript - 有没有办法在 UI-bootstrap 的轮播组件上配置动画集?

javascript - 添加颜色后,简单的基于 jQuery 的 ascii 动画崩溃

javascript indexOf() 不断返回-1

javascript - 将字节传递给 NodeJS 插件

javascript - Angular 单选按钮未正确检查

angularjs - 重新渲染整个 ng-repeat