我想在我的web应用程序中制作自定义动画,我使用$interval方法来做一些视觉效果。我只想知道,动画什么时候结束
例如var myInterval = $interval(function(){
//do some staff
}, 10, 20);
如何获得间隔结束的通知?当然,$timeout(fn, 200)除外。
第二个问题也是关于通知,但在情况下,当我取消间隔是其他地方手动$interval.cancel(myInterval),我能得到通知吗?
对于第一种情况,您可以执行:
myInterval.then(function () { console.log("Finished."); } );
当Angular已经在为你计算迭代次数时,计算迭代次数并不是一个好主意。
见https://docs.angularjs.org/api/ng/service/美元q
取消间隔时可以自己广播事件。看一下$rootScope.$broadcast().
取消间隔:
$rootScope.$broadcast('Custom::Event');
要检索广播的位置:
$scope.$on('Custom::Event', function (e) { ... });
编辑:迭代
如果您想在最后一次迭代之后发送广播,请检查提供给函数的第一个参数$interval。
$interval(function (iteration) {
// Do some stuff...
// Broadcast after last iteration
if (iteration === iterations - 1) {
$scope.$broadcast('Interval::Finished');
}
}, delay, iterations);
参见:JS Bin