我有以下问题。我从API获取数据并将其显示给用户。这是一个包含图像的列表,您可以滚动浏览。当用户点击图像时,他将获得有关其他网站上图像的更多信息。
我想将从服务器获得的数据存储在工厂内的局部变量中。但不知何故,数据没有得到妥善保存,这让我疯狂。
.factory('PostService', function($q, $http, domain){
var posts = [];
return {
getInit: function(){
var self = this;
//get fresh elements
console.log("get fresh elements");
var req = {
method: 'POST',
url: domain+'/api/v1/statuses'
}
return $http(req).then(function(success){
self.storeLocal(success.data.data); //store data in factory
return success.data.data; //return data to controller
}, function(error){
console.log(error);
});
},
在通话结束后,我有第二个功能应该访问帖子并从服务器获取更多元素。
getAfter: function(){
var self = this;
console.log("get more elements");
var req = {
method: 'POST',
url: domain+'/api/v1/statuses',
data: {
'last_status': posts[posts.length - 1].id
}
}
return $http(req).then(function(success){
if(success.data.data.length > 0){
self.storeLocal(success.data.data);
return success.data.data;
} else {
return false;
}
}, function(error){
console.log(error);
});
}
storeLocal: function(posts){
posts = posts.concat(posts);
},
但它告诉我帖子未定义。那问题是什么?
答案 0 :(得分:0)
所以我可以解决这个问题,只需用posts = posts.concat(success.data.data)
替换storeLocal函数就行了。
但是,有没有办法,使用我刚才提出的结构?我希望这可以工作,因为稍后我可以切换存储的工作方式。