2013-03-31 12 views
7

Ho il seguente frammento di codice:Come posso spostare le richieste HTTP da un controller AngularJS e in un servizio?

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; 
     }); 
    } 

È stato suggerito a me che avrei dovuto forse prendere in considerazione la creazione di un servizio (s) per $ richieste HTTP Qualcuno può darmi un esempio di come avrei potuto fare questo per il codice sopra. In particolare, non sono sicuro di come impostare il servizio e fare in modo che il controller lo inietti.

risposta

14

Il vostro servizio ha bisogno di guardare qualcosa di simile:

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; 
}); 

Il controller ha bisogno di iniettare il servizio, chiamare l'oggetto del servizio con il parametro, e inviare in una funzione di callback:

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

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

Maggiori informazioni su service dependency injection nel tutorial.

Problemi correlati