如何在angularjs中通知$interval end



我想在我的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

相关内容

  • 没有找到相关文章

最新更新