2014-09-18 60 views
0

我正在使用AngularJS的應用程序。我的應用程序看起來像這樣的服務:

myApp.service('myService', ['$http', '$q', function($http, $q) { 
    this.getPicks = function() { 
    /* 
     var deferred = $q.defer(); 

     var picks = []; 
     picks.push({ name: 'Test 1', id:1 }); 
     picks.push({ name: 'Test 2', id:2 }); 

     deferred.resolve(picks); 
     return deferred.promise; 
    */ 

    return $http.get('/api/getPicks'); 
    }; 

我打電話在我的控制器使用下面的調用這個服務:

return myService.getPicks(); 

,當我返回此代碼的工作我硬編碼挑選數組。我正在使用它來進行測試。現在,我正嘗試連接到REST API並且它不工作。我沒有看到任何錯誤。同時,我沒有看到任何回報。我的問題是:

1. Am I doing something wrong with my $http.get call? 
2. How can I print out the result of the $http.get call? 

謝謝!

+0

你能分享你是如何處理的反應如何?請記住,$ http返回一個延遲。 – sma 2014-09-18 19:49:43

回答

0

當你連接REST API調用時,你需要在這種情況下想出一個工廠。事情是這樣的:

myApp.factory('myService', ['$http', '$q', function($http, $q) { 
    return { 
    getPicks: function() { 
    /* 
     var deferred = $q.defer(); 

     var picks = []; 
     picks.push({ name: 'Test 1', id:1 }); 
     picks.push({ name: 'Test 2', id:2 }); 

     deferred.resolve(picks); 
     return deferred.promise; 
    */ 

    return $http.get('/api/getPicks'); 
    } 
}]); 

,並在控制器你可以注入這家工廠,並呼籲像這樣:

myService.getPicks().then(function(data){ 
//Code to handle response 
});