Обработка нескольких HTTP-запросов в один клик

Я новичок в angularJS. Я использовал директиву Angular для блочного пользовательского интерфейса, и она работает, как и ожидалось. Моя проблема заключается в том, что между двумя загруженными шаблонами он фактически вызывает 3 серверных службы. Все это обслуживание должно быть последовательным. так что в случае ошибки он просто пропустит шаг. В соответствии с дизайном пользовательского интерфейса блока он показывает страницу загрузки, но показывает это 3 раза (в основном он запускается/останавливается при каждом HTTP-вызове). Я пытался использовать их ручной запуск / останов, но это неэффективно. Даже следуя их указаниям, я, должно быть, делаю что-то неправильно в конфигурации. Извините, если это глупый вопрос, но я новичок в angular js и изучаю все это новое.

Здесь более подробно о директиве, которую я использую.

ссылка на github

Мой код:

 angular.module(‘myApp').controller('MyController', function($scope, blockUI) {

//A function called from user interface, which performs an async operation.
 $scope.onSave = function(item) {

    // Block the user interface
     blockUI.start();

    // Perform the async operation    
     item.$save(function() {
               //service call 1 $http.post
                 if success then
                     //service call 2 $http.post
                     if success
                       //service call 3 $http.post
                     else
                       //error scenario
                 else
                    //error scenario
      // Unblock the user interface
       blockUI.stop();
    });
  };
});

Приведенный выше код покажет blockUI 3 раза. as (3 HTTP-вызова)… хотел обрабатывать 3 разных вызова как один вызов при выполнении blockUI.


person PreTri    schedule 19.11.2015    source источник
comment
Взгляните на этот поток stackoverflow .com/questions/18010796/ и этот stackoverflow.com/questions/16284403/   -  person J-D    schedule 19.11.2015


Ответы (1)


Меня всегда радует, когда я узнаю ответ на свой вопрос. Вот его ответ, который я использовал для своей реализации. Надеюсь, это поможет другим.

 angular.module(‘myApp').controller('MyController', function($scope,      blockUI) {

//A function called from user interface, which performs an async      operation.
 $scope.onSave = function(item) {

// Block the user interface
 blockUI.start();

// Perform the async operation    
 item.$save(function() {

           $timeout(function() {
            blockUI.message('Still loading ...'); 

           //service call 1 $http.post
             if success then{
                   $timeout(function() { 
                   blockUI.message('Almost there ...');      

                 //service call 2 $http.post
                 if success then{
                   $timeout(function() { 
                   blockUI.message('Cleaning up ...'); 

                   //service call 3 $http.post
                   if success then
                       //process save
                   else{
                       //error scenario
                       // Unblock the user interface
                       blockUI.stop();
                   }
                    }, 3000);
                 }else{
                   //error scenario
                   // Unblock the user interface
                  blockUI.stop();
                 }
              }, 2000);
             }else{
                //error scenario
                // Unblock the user interface
                blockUI.stop();
             }
  }, 1000);

});
  };
});

Это позаботится о моем вопросе… это пользовательский интерфейс blockUI для полных 3 вызовов как один блокUI. Теперь сообщение, могу ли я иметь это или нет, зависит от индивидуального выбора.

person PreTri    schedule 23.11.2015