我想在我的网络应用程序中制作自定义动画,并且我使用$ interval方法来做一些视觉效果。 我想要的就是知道,当动画结束时。
例如
var myInterval = $interval(function(){
//do some staff
}, 10, 20);
如何获得有关该间隔结束的通知?当然,$ timeout(fn,200)除外。
第二个问题也是关于通知,但是如果我通过$ interval.cancel(myInterval)手动取消该间隔是其他地方,我可以得到通知吗?
答案 0 :(得分:3)
对于第一种情况,您可以这样做:
myInterval.then(function () { console.log("Finished."); } );
当Angular已经为你做这件事时,计算迭代次数并不是一个好主意。
答案 1 :(得分:1)
取消间隔时,您可以自己广播事件。看看$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