2016-06-14 3 views
1

У меня есть многоэтапная форма, и я хочу управлять пользователем, если он представил достоверную информацию на каждом шаге. Я проверяю на валидацию, и если это правда, я перехожу к следующему шагу, но в представлении $ scope.form. $ Отображается True, и появляется ng-сообщение.

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; 
      } 

     } 

Так что это моя функция, и она не работает:

console.log($scope.AdvertiserRegistration.$valid) возвращает True.

Любое решение?

+0

Что вы пытаясь достичь с этим $ scope.AdvertiserRegistration. $ submitted = false? – wdanda

+0

Вы понимаете, что ваш window.location будет происходить мгновенно, а $ Представленный будет только обновлен через 3 секунды (я предполагаю, что вы имитируете обратную передачу сервера на 3 секунды?). – wdanda

+0

так @wdanda, что вы предлагаете в этом случае? –

ответ

0

При использовании угловой любая операция асинхронной выводит вас из углового переваривать цикла, так что угловая команда предоставляет услуги для этих операций, один из них $timeout, изменить свой код к этому:

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

спасибо, ваше решение действительно работало. –

Смежные вопросы