2016-06-14 3 views
1

Ich habe ein mehrstufiges Formular und möchte den Benutzer steuern, wenn er in jedem Schritt eine gültige Information übermittelt hat. Ich überprüfe die Validierung, und wenn dies zutrifft, gehe ich zum nächsten Schritt, aber die $ scope.form. $ Submitted zeigt True und die ng-Nachricht erscheint.

function stepForward(step){ 
      console.log($scope.AdvertiserRegistration.$valid); 
      if($scope.AdvertiserRegistration.$valid){ 
       var t = setTimeout(function(){ 
        $scope.AdvertiserRegistration.$submitted = false; 
       },3000); 
       window.location = '#/advertiser/register/step'+step; 
      } 

     } 

Also das ist meine Funktion und es funktioniert nicht:

console.log($scope.AdvertiserRegistration.$valid) gibt Wahr zurück.

Irgendeine Lösung?

+0

Was Sie sind versucht mit diesem $ scope.AdvertiserRegistration zu erreichen. $ submitted = false? – wdanda

+0

Sie wissen, dass Ihre window.location sofort erfolgt und $ submitted nur 3 Sekunden später aktualisiert wird (ich nehme an, Sie simulieren einen Server Postback von 3 Sekunden?). – wdanda

+0

also @wdanda was schlägst du in diesem Fall vor? –

Antwort

0

Wenn Winkel unter Verwendung eines beliebigen Asynchron-Operation, die Sie aus dem Winkel verdauen Zyklus dauert, so dass die Winkel Team Services für diese Operationen liefert, einer von ihnen $timeout ist, ändern Sie den Code dazu:

function stepForward(step){ 
      console.log($scope.AdvertiserRegistration.$valid); 
      if($scope.AdvertiserRegistration.$valid){ 
       //YOU NEED TO INJECT $timeout 
       var t = $timeout(function(){ 
        $scope.AdvertiserRegistration.$submitted = false; 
       },3000); 
       window.location = '#/advertiser/register/step'+step; 
      } 

     } 
+0

danke, Ihre Lösung hat funktioniert. –

Verwandte Themen