2016-09-06 3 views
1

Ich stecke wegen Timer-Problem fest.Ionic & AngularJS, Timeout nicht abgebrochen

Kurz gesagt, der Code übergibt ein Formular und die Antwort auf den Beitrag wird in einem iFrame geöffnet. Ein EventListener auf dem Formular ermöglicht es mir, das "Senden" zu erkennen und einen Timer anzuwenden, um zu erkennen, ob das Laden des iFrames zu lange dauert. Aber auch wenn der iFrame geladen ist (= Timer sollte abgebrochen werden), wird die Timerfunktion aufgerufen. Hier ist der Code:

[...] 
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); 
    } 
}); 
} 

[...]

Ich habe auch versucht mit setTimeout und clear und durch alle von ihnen wie das Clearing: Is there a way to clear all time outs?

Was bin ich? Vielen Dank im Voraus!

Antwort

0

Okay, also habe ich den Grund gefunden, warum der Timer nicht abgebrochen wurde!

Ich versuchte zu debuggen, Alert() zu setzen, wenn das Formular gesendet wurde und es fand heraus, dass das Programm mehrere Male in den Send EventListener eingegeben wurde. Ich überholte alle Timer-IDs und tötete sie, aber ich entschied mich schließlich aufzugeben und die Ursache zu finden.

Das Problem war meiner Ansicht nach, in der .html-Seite rief ich mehrmals 'ng-controller = "MyCtrl"'! Also habe ich nur die extra gelöscht und das Programm hat funktioniert!

Hoffe es hilft!

Verwandte Themen