Ionic&AngularJS,超时未取消



我卡住了,因为计时器问题。

简单地说,代码提交一个表单,并在iFrame中打开文章的答案。表单上的EventListener允许我检测"提交",并应用计时器来检测iFrame加载是否太长。但是,即使iFrame被加载(=timer应该被取消),计时器的函数也会被调用。下面是代码:

[...]
var el = document.getElementById("myForm");
if(el){
el.addEventListener("submit", function(event){
    $scope.popupOpened=false;
    var iframeWindow = window.parent.document.getElementById('myIframe');
    var iframeDoc = iframeWindow.contentWindow.document;
    //7 seconds before the popup is shown up
    $rootScope.myTimer = $timeout(function(){
        window.frames[0].stop();
        if(!$scope.popupOpened){
        errorConnexion2();//popup opening
        }
    }, 7000);
    iframeWindow.onload=function(){
    console.log("iframe loaded");
        //cancel the timer
        $timeout.cancel($rootScope.myTimer);
   }
 });
}

[…]

我还尝试了setTimeout和clearartimeout,并通过清除所有这样的:是否有一种方法来清除所有超时?

我错过了什么?

好了,我找到了定时器没有被取消的原因了!

我尝试调试,在提交表单时设置alert(),它发现程序在提交eventListener中多次进入。我想抓住所有定时器id并杀死它们,但我最终决定放弃并找到根本原因。

问题是在我看来,在。html页面我多次调用'ng-controller="MyCtrl" !所以,我只是删除了多余的,程序工作了!

相关内容

  • 没有找到相关文章

最新更新