我使用$ interval在第一個控制器中運行某個函數。在重定向到第二個控制器之後,還有$ interval註冊的函數(在第一個控制器中實現)正在運行。我想停止$ interval服務而不使用destroy函數。
3
A
回答
3
Note:當您完成這些服務時,由此服務創建的間隔必須明確銷燬 。特別是當銷燬控制器的作用域或指令的 元素時,它們不會自動銷燬。您應該考慮到這一點,並確保在適當的時候始終取消間隔。有關如何以及何時執行此操作的更多詳細信息,請參閱下面的示例 。
您可以使用cancel
方法來清除$interval
對象。您應該在離開控制器時取消interval
。
爲此,您需要在$scope
的$destroy
事件中添加eventListener
事件,您可以執行清理操作(例如,取消間隔對象,取消超時對象)。
代碼
var myInterval = $interval(function(){
//your interval code
}, 1000)
//register this listener inside your controller where the interval belongs.
$scope.$on('$destroy', function(){
$interval.cancel(myInterval)
});
2
添加間隔變量在rootScope。然後在第二個控制器中將其取消,如下所示。
第一個控制器
$rootScope.stopInterval = $interval(function(){
//code goes here
}, 1000);
第二個控制器
$interval.cancel($rootScope.stopInterval);
注意:只有在這種情況下,缺陷是你需要停止它在你之後第一個控制器使用的控制器,但是可靠的。
+0
中使用上面的代碼,使用$ rootScope,因爲這是糟糕的代碼風格。 Angular-way是使用自定義服務。 –
相關問題
- 1. 針對特定控制器的Zend_Rest_Route
- 2. 僅針對選定控制器的Rails控制器特定資產
- 3. AngularJs隱藏特定路徑/控制器
- 4. 停止尋找控制器特定的JS和CSS的導軌
- 5. AngularJS - 在使用控制器時停止工作
- 6. 帶命名組的AngularJS routeprovider停止多個控制器實例
- 7. AngularJS子控制器綁定
- 8. 未定義控制器AngularJS
- 9. 如何停止應用到特定控制器的幫助器方法?
- 10. angularjs - 禁止訪問$範圍並停止從控制檯操作
- 11. CGBitmapContextCreate停止針對iOS 9
- 12. angularJS控制器
- 13. AngularJs控制器
- 14. AngularJS控制器
- 15. 斯威夫特的iOS API控制器停止工作
- 16. 強制停止特定div的動畫
- 17. NSNotification停止顯示控制器presentViewController
- 18. 音頻控制器停止按鈕
- 19. 停止控制器功能內的web2py
- 20. Zend框架控制器停止工作
- 21. 停止頁面一旦從控制器
- 22. AngularJS controllerAs:更新$ interval中的控制器字段不會更新ng-show
- 23. AngularJS - 將對象從控制器1移動到控制器2
- 24. 語音控制API - 針對特定短語的高準確度
- 25. 控制器內部的AngularJS控制器
- 26. angularJS:控制器之間的控制器
- 27. angularjs corousel停止工作
- 28. Avaudioplayer如何停止從其他控制器播放對象
- 29. Angularjs工廠服務如何將特定數據返回給特定控制器?
- 30. AngularJS:從控制器
我想在哪裏使用ClearInterval?它在第二個控制器還是第一個控制器? – jana91
在這種情況下,您應該在同一個控制器 –