2013-09-30 27 views
8

我有這樣的功能,在AngularJS控制器在AngularJS控制器休假銷燬超時

$timeout($scope.loadPosts, 5000); // pull every 5 seconds 

當我從控制器(另一種觀點),我怎麼可以停止超時,並最終摧毀導航離開控制器,所以它不再運行?

+0

控制器反正銷燬導航了。 – Neikos

+0

但是超時函數並沒有停止運行 – subZero

+1

'$ timeout'僅僅是'setTimeout'的一個包裝,它在內部處理。你從'setTimeout'返回的數字實際上不是一個引用,而只是你可以用來摧毀定時器的內部數字。 – Neikos

回答

14

我能夠通過偵聽$破壞事件解決它,就像這樣:

var pull = $timeout($scope.loadPosts, 5000); // pull every 5 seconds 

$scope.$on('$destroy', function(){ 
    $timeout.cancel(pull); 
});