2014-07-24 27 views
1

我想在我的web應用程序中製作自定義動畫,並且使用$ interval方法來做一些視覺效果。 我只想知道,當動畫結束時。

例如

var myInterval = $interval(function(){ 
    //do some staff 
}, 10, 20); 

我怎樣才能得到通知有關期間結束?當然,除了$ timeout(fn,200)外。

而第二個問題也是關於通知,但萬一,當我通過$ interval.cancel(myInterval)手動取消該時間間隔是其他地方時,我可以得到有關通知嗎?

回答

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

+0

陛下...看起來不錯,但只針對第二種情況。 第一種情況下,當我手動設置迭代計數? –