2014-07-15 184 views
0

我想調用NPR API中的文章列表。我有一個工作網址,它返回爲JSON。然而,在我的控制器的某個地方,我迷路了。當我console.log它測試,它返回作爲[對象對象],沒有別的。我的服務是這樣的:AngularJS - API調用返回[對象對象]

app.factory('nprService', function($resource) { 
//call npr api 
return $resource('http://api.npr.org/queryid=61&fields=title,byline,text,image,all&output=JSON... 

和我的控制器:

app.controller('ArticleListCtrl', function($scope, nprService) { 
//call the service and store as a variable 
$scope.article = nprService.get(); 
}); 

我一直在使用查詢得到的結果,這樣的嘗試,但它返回一個JSON對象,這樣顯然沒」工作。

//call the service and store as a variable 
nprService.query(function(data) { 
    $scope.article = data; 
}); 

任何幫助將不勝感激。提前致謝。

+2

嘗試'console.log(JSON.stringify(object))'。 – Mritunjay

+0

好的,我做到了。這是我的迴應:{「$ promise」:{},「$ resolved」:false}我不知道承諾,所以我沒有最簡單的想法如何處理,或者如果我需要使用承諾。有任何想法嗎? – camlewis

回答

1

您需要使用promise構造來獲取數據。控制器代碼可以重寫爲:

app.controller('ArticleListCtrl', function($scope, nprService) { 
//call the service and store as a variable 
nprService.get().then(function(result){ 
    $scope.article = result.data; 
}); 
+0

感謝您的幫助。我使用這段代碼並開始看到這個錯誤錯誤:'undefined'不是函數(評估'nprService.get()。then(function(result){scope =看着它,但無法弄清楚我會如何解決它。謝謝。 – camlewis

0

$ resource.get()函數返回一個承諾。它應該這樣使用:

nprService.get().success(function(data, status, headers, config){ 
    $scope.article = data; 
}).error(function(data, status, headers, config){ 
    console.log(status); 
});