I have several $timeout
expressions in Modal controller
App.controller('ModalCtrl', function ($scope, $timeout) {
for (var i = 0; i < 10; i++) {
(function () {
var timer = $timeout(function () {
console.log('timer')
}, 1000);
})()
}
})
I need to clear all the timers when invoking the modal:
App.controller('MainCtrl', function ($scope, $modal, $timeout) {
$scope.showMap = function () {
var modal = $modal.open({
templateUrl: 'modalap.html',
controller: 'modalCtrl',
})
modal.result.then(function () { //fires when modal is resolving
}, function () { //fires when modal is invoking
});
} })
How can I do that?
PS Sorry for bad code formatting. I don't know why but I cant format it better. I duplicated code here:
You may also let them cancel themselves by doing this...
The
$timeout
service returns aPromise
object which can be used to cancel the timeout.To cancel all pending timeouts, you need to maintain a list of promises and cancel the complete list when you open the modal.