AngularJS. Очистить $ timeout при вызове углового-ui модального
у меня есть несколько $timeout
выражения в режимный контроллер
App.controller('ModalCtrl', function ($scope, $timeout) {
for (var i = 0; i < 10; i++) {
(function () {
var timer = $timeout(function () {
console.log('timer')
}, 1000);
})()
}
})
мне нужно очистить все таймеры при вызове модального:
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
});
} })
как я могу это сделать?
PS извините за плохое форматирование кода. Я не знаю, почему, но я не могу отформатировать его лучше. Я продублировал код здесь:
2 ответа:
The
$timeout
сервис возвращает aPromise
объект, который может быть использован для отмены тайм-аута.// Start a timeout var promise = $timeout(function() {}, 1000); // Stop the pending timeout $timeout.cancel(promise);
чтобы отменить все ожидающие тайм-ауты, вам нужно сохранить список обещаний и отменить полный список при открытии модального.