我对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数组的行。
[Promise, Promise, Promise, Promise, Promise, Promise, Promise, Promise, Promise, Promise]
如何为var contentlist=[];for循环中的变量$$http.get和console.log(contentlist)行分配值;获取对象数组,如下所示
[Object, Object, Object, Object, Object, Object, Object, Object, Object, Object]
最佳答案
问题就在这一部分:
contentList[i] = $http.get(galeriContentURL, { cache: true})
.then(function(response){
return response.data;
});
$http
返回存储在promise
中的contentList
数组,而不是数据。
函数,数据将不会返回到内容列表。
您需要将该代码替换为:
$http.get(galeriContentURL, { cache: true})
.then(function(response){
contentList[i] = response.data;
});
这并不能保证存储在
数组的顺序与它们的顺序相同
请求。