2013-03-31 9 views
7

Mam następujący fragment kodu:Jak mogę przenieść żądania HTTP z kontrolera AngularJS i do usługi?

angular.module('test', []).controller('TestCtrl', function ($scope, $http) { 
     $scope.selectedTestAccount = null; 
     $scope.testAccounts = []; 

     $http({ 
      method: 'GET', 
      url: '/Admin/GetTestAccounts', 
      params: { applicationId: 3 } 
     }).success(function (result) { 
      $scope.testAccounts = result; 
     }); 
    } 

Zasugerowano mi, że powinienem być może rozważyć utworzenie usługi (y) $ http kupna Czy ktoś może dać mi przykład, jak można to zrobić dla kod powyżej. W szczególności nie jestem pewien, jak skonfigurować usługę i zmusić kontrolera do jej wstrzyknięcia.

Odpowiedz

14

Usługa musi wyglądać następująco:

angular.module('testaccount', []). 
factory('TestAccount', function($http) { 
    var TestAccount = {}; 
    TestAccount.get = function(applicationId, callback) { 
    $http.get('/Admin/GetTestAccounts?applicationId=' + applicationId).success(function(data) { 
     callback(data); 
    }); 
    }; 
    return TestAccount; 
}); 

Twój kontroler musi wstrzyknąć usługi, zadzwoń obiekt usług z parametrem i wysyłać w funkcji callback:

angular.module('test', ['testaccount']).controller('TestCtrl', function ($scope, TestAccount) { 
    $scope.selectedTestAccount = null; 
    $scope.testAccounts = []; 

    TestAccount.get(3, function (data) { 
     $scope.testAccounts = data; 
    }) 
} 

Przeczytaj więcej o service dependency injection w samouczku.

Powiązane problemy