我对AngularJS有一个问题是,我无法在$ http.get方法中为外部变量赋值。这是我的代码片段:
.factory('MediaService',['$http', function($http, $q){
return {
getGalleryIds : function() {
galeriURL = 'http://api.tika.gov.tr/www/tr/galleries?';
return $http.get(galeriURL, { cache: true}).then(function(response){
contentIdList = response.data.data;
var contentList = [];
for (i=0;i<contentIdList.length;i++) {
var galeriContentURL = 'http://api.tika.gov.tr/www/tr/galleries/' + contentIdList[i].id;
contentList[i] = $http.get(galeriContentURL, { cache: true})
.then(function(response){
return response.data;
});
}
console.log(contentList);
return contentList;
});
}
}
}]);
我的问题出在 console.log(contentList); 第一行 Promise Array ,因为我无法为外部变量赋值。
[Promise, Promise, Promise, Promise, Promise, Promise, Promise, Promise, Promise, Promise]
如何为 for loop $$ http.get 和 console.log(contentList)中的 var contentList = []; 变量赋值; 获取对象数组,如下所示
[Object, Object, Object, Object, Object, Object, Object, Object, Object, Object]
答案 0 :(得分:0)
问题出在这一部分:
contentList[i] = $http.get(galeriContentURL, { cache: true})
.then(function(response){
return response.data;
});
$http
会返回您promise
中存储的contentList
当你在成功中使用return时,数组,而不是数据 功能,数据不会返回到内容列表。
<小时/> 您需要用以下代码替换该代码:
$http.get(galeriContentURL, { cache: true})
.then(function(response){
contentList[i] = response.data;
});
这并不能保证所有数据对象都存储在其中 数组的顺序与它们的顺序相同 请求。