последовательность операций в угловом контроллере работает неправильно

0

У меня есть страница, где пользователь вводит исходные данные, после чего он нажимает кнопку "Рассчитать". И при щелчке должно появиться gif-изображение с загрузчиком, когда выполняются вычисления. Как только результат будет готов, gif-изображение должно исчезнуть, и результат должен быть отображен на странице. Вот код, который я использую:

$scope.loading=false; //initially the img is invisible    
$scope.calc=function(){
      $scope.loading=true;//make the img visible
      var result=MyService.calc(input_data); //processing data
      $scope.result=result;
      $scope.loading=false;//hide the img
}

И HTML-образ определяется следующим образом:

<div class="span1">
  <div ng-if="loading"><img ng-src="img/ajax-loader.gif"></div>
</div>

Это ожидаемый порядок вещей. Но на самом деле он работает следующим образом: после нажатия "Вычислить изображение" не появляется, и через некоторое время, в течение которого выполнялись вычисления, изображение отображается и экранируется.

Расчеты выполняются в сервисе.

В чем проблема? Я уже пытался сделать $q.defer() в службе, которая решает с результатом. А затем в результате отображения контроллера в функции promise.then. Но это не сработает.

  • 0
    Использует ли вычисление асинхронную операцию?
  • 0
    Просто простые итерации
Теги:

1 ответ

1
Лучший ответ

Для этого используйте $timeout. Модель не обновляется в середине исполнения

JavaScript

$scope.calc=function(){
      $scope.loading=true;//make the img visible

      $timeout(function(){
          var result=MyService.calc(input_data); //processing data
          $scope.result=result;
          $scope.loading=false;//hide the img
      });
}

($timeout должно быть введено зависимостями точно так же, как $scope)

  • 0
    Я сделал так, как посоветовал Arg0n. Теперь порядок вещей правильный, за исключением того, что теперь изображение отображается без анимации. Кажется, что его анимация остановлена, пока сервис выполняет работу. Что делать? PS Сам по себе гиф в порядке
  • 0
    Смотрите это (или подобное): stackoverflow.com/questions/191413/…
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню