2

1 つのコントローラーに複数のクエリがあり、コントローラーの読み込み中 (およびいくつかの要素をクリックした後) に読み込まれます。

var d = $q.defer();
$scope.userOrders = UserOrders.query({id:$routeParams.id}, function(result) {
   d.resolve(result);

});
$q.all([d.promise]).then(function(response){
   $('#loading').hide();
});

各コントローラーではなく、これを一度だけ書き込むにはどうすればよいですか?

4

1 に答える 1

3

ajax ロジックをサービスにカプセル化する

var services = angular.module('myServices', []);

services.factory('AjaxLoader', ['$q', function($q) {

    return {
        doAjax : function() {
           var d = $q.defer();
           $scope.userOrders = UserOrders.query({id:$routeParams.id}, function(result) {
               d.resolve(result);
           });

           $q.all([d.promise]);
        }
    }
});

あなたのコントローラーで。

var controllers = angular.module('myControllers',[]);

controllers.controller('Controller', ['AjaxLoader', function(AjaxLoader) {
    AjaxLoader.doAjax().then(function() {
          $("#loading").hide();
    });
}]);
于 2013-09-10T06:30:13.047 に答える