我有兩個Web服務:AngularJS合併Web服務響應
一個回報「文章」是這樣的:
[
{
"id": "1",
"headline": "some text",
"body": "some text",
"authorId": "2"
},
{
"id": "2",
"headline": "some text",
"body": "some text",
"authorId": "1"
}
]
而另外一個返回「作者」這樣,給定一個ID:
{
"id": "1",
"name": "Test Name",
"email": "[email protected]",
"photo": "path/to/img"
}
我想將兩者結合起來,所以我可以在文章概覽列表中顯示作者姓名和照片。
像這樣:
[
{
"id": "1",
"headline": "some text",
"body": "some text",
"authorId": "2",
"author_info": {
"id": "2",
"name": "Another Test Name",
"email": "[email protected]",
"photo": "path/to/img"
}
},
{
"id": "2",
"headline": "some text",
"body": "some text",
"authorId": "1"
"author_info": {
"id": "1",
"name": "Test Name",
"email": "[email protected]",
"photo": "path/to/img"
}
}
]
我有一個「公司章程」的服務,在返回之前獲取的物品,但什麼是最好的方法與來自類似的「作者」的作者信息豐富返回的JSON服務「文章」服務輸出?
factory('Authors', ['$http', function($http){
var Authors = {
data: {},
get: function(id){
return $http.get('/api/authors/' + id + '.json')
.success(function(data) {
Authors.data = data;
})
.error(function() {
return {};
});
}
};
return Authors;
}]).
factory('Articles', ['$http', 'Authors', function($http, Authors){
var Articles = {
data: {},
query: function(){
return $http.get('/api/articles.json')
.success(function(result) {
Articles.data = result; // How to get the author info into this JSON object???
})
.error(function() {
Articles.data = [];
});
}
};
return Articles;
}])
另請告訴我,這是一個完全錯誤的方法。 :)
謝謝你的建議,但是這將意味着獲取的每一篇文章的所有作者,對不對?這是很多流量。 – 2013-02-27 08:46:43
不,代碼假定您可以獲取所有文章,完成後您將獲取所有作者。然後結合結果。只涉及兩個請求 – Ulises 2013-02-27 16:24:53
@JakobLøkkeMadsen你弄明白了嗎? – Ulises 2013-03-14 20:19:48