2015-07-06 3 views
0

Вот мой запрос ajax,Angularjs Показатель загрузки spinner

Я хотел показать загрузчик. Я ссылался на here, но я не понимаю.

Я просто хотел показать прядильщик во время $http.post и скрыть после того, как сообщение будет сделано.

Нечто вроде angular.element('#mydiv').show() и angular.element('#mydiv').hide() внутри звонка. В каком месте я должен указать, чтобы показать #mydiv во время сообщения.

Вот мой вызов

$scope.doVerify={email:'',password:''}; 
    $scope.doVerify = function() 
    { 
    email = $scope.verify.useremail; 
    password = $scope.verify.password; 
    $scope.data.show = false; 
    $http.post('VerifyUser', { email: email, password: password}).then(function (results) 
    { 
    $scope.data.show = true 
    if(results.data=='success') 
    { 
    $location.path('registration'); 
    } 
    else 
    { 
    $scope.data.msg = 'Incorrect Password' 
    } 
    }); 
    }; 

Где я должен поставить angular.element('#mydiv').show() и angular.element('#mydiv').hide() загрузчика?

ответ

1

angular.element('#mydiv').show() необходимо уйти до того, как вы сделаете $ http-вызов, и angular.element('#mydiv').hide() должны идти успешно и обратные вызовы.

angular.element('#mydiv').show(); // show loading spinner 
$http.post('VerifyUser', { email: email, password: password}).then(function (results) { 
    angular.element('#mydiv').hide(); // hide loading spinner 
}); 
+0

Могу ли я сделать что-то вроде $ ('# mydiv'). FadeOut (100); т. е. чтобы «# mydiv» появлялись и исчезали медленно.? – AngularAngularAngular

+0

Я верю, да, если у вас есть jQuery в вашем приложении. –

+0

Могу ли я сделать это в самом угловом? – AngularAngularAngular

1

Я думаю, что лучшее решение, чтобы сделать это, чтобы добавить счетчик в HTML так:

<div ng-show="spinnerVisibility" class="spinner></div>

, а затем контролировать spinnerVisibility переменную в контроллере до/после принятия после. Пример:

$scope.spinnerVisibility = true; 
$http.post('VerifyUser', { email: email, password: password}).then(function (results) { 
    $scope.spinnerVisibility = false; 
}); 
+0

спасибо, могу ли я сделать, чтобы div 'spinner' появлялся медленно, как fadeout или что-то в этом роде? – AngularAngularAngular

+0

Да, конечно - вы можете сделать это с помощью CSS3. Просто добавьте/удалите класс, который будет выполнять эффект fadeIn/fadeOut. Проверьте это http://stackoverflow.com/questions/24868844/trying-to-get-a-progress-spinner-to-fade-in-using-css – dark4p

1

Здесь Как вы можете показать счетчик в своем коде. показать или скрыть свой img/значок whre $ scope.prograssing var sets.

$scope.doVerify={email:'',password:''}; 
     $scope.doVerify = function() 
     { 
     email = $scope.verify.useremail; 
     password = $scope.verify.password; 
     $scope.data.show = false; 

    $scope.sendAjax = function() { 
    $scope.prograssing = true; // show spinner here 
    $http.post('VerifyUser', { email: email, password: password}).then(function (results) 
      { 
      $scope.data.show = true 
      if(results.data=='success') 
      { 
      $location.path('registration'); 
    $scope.prograssing = false;  // hide spinner when successful 
      } 
      else 
      { 
      $scope.data.msg = 'Incorrect Password'; 
    $scope.prograssing = false;  // hide spinner when unsuccessful 
      } 
      }); 
      }; 
$scope.sendAjax(); 
     }; 
1

angular.element('#mydiv').show() должен идти в определении вашего перехватчика. Перехватчики вставляются внутри конфигурационного блока углового модуля. Точно так, как это было сделано here.

angular.element('#mydiv').hide() необходимо зайти в ответ службы $ http (внутри блока 'then').

Пример, который вы имеете в виду, делает это именно так, как должен.

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