AngularJS。 在调用angular-ui模式时清除$ timeout

我在Modal控制器中有几个$timeoutexpression式

 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抱歉代码格式不正确。 我不知道为什么,但我不能更好地格式化。 我在这里复制代码:

$ timeout服务返回一个可用于取消超时的promise对象。

 // Start a timeout var promise = $timeout(function() {}, 1000); // Stop the pending timeout $timeout.cancel(promise); 

要取消所有待处理的超时,您需要维护一个承诺列表,并在打开模式时取消整个列表。

你也可以让他们取消自己的做法…

 (function(){ var timer = $timeout(function(){ console.log(timer.$$timeoutId); $timeout.cancel(timer); }, 1000); })();