首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >AngularJS。调用angular-ui模式时清除$timeout

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

Stack Overflow用户
提问于 2014-01-09 19:22:33
回答 2查看 41.4K关注 0票数 59

我在模态控制器中有几个$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对于错误的代码格式,我很抱歉。我不知道为什么,但我不能更好地格式化它。我重复了代码here

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-09 19:31:52

$timeout服务返回一个Promise对象,该对象可用于取消超时。

// Start a timeout
var promise = $timeout(function() {}, 1000);

// Stop the pending timeout
$timeout.cancel(promise);

要取消所有挂起的超时,您需要维护承诺列表,并在打开模式时取消完整列表。

票数 140
EN

Stack Overflow用户

发布于 2015-07-03 04:38:16

你也可以通过这样做让他们自己取消...

(function(){
  var timer = $timeout(function(){
    console.log(timer.$$timeoutId);
    $timeout.cancel(timer);
  }, 1000);
})();
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21018796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档