我有一个集合,代表从url
.fetch()
加载的电影列表。此网址会返回摘要信息的电影列表,例如movieid
和moviename
。然后,我想根据此集合中的movieid
从另一个URL加载有关此电影的更多信息。
所以我的第一个网址(http://movieapi.com/popular)回复说:
{
"movies": [ { "movieid": "1234", "moviename": "Iron Man" } ]
}
然后我想为集合http://movieapi.com/movie/ {movieid}中的每个模型加载,并回复说:
{
"cover_img": "blahblah",
"rating": "10/10"
}
如何将这两个数据集合并为一个可以通过集合轻松加载的模型?
答案 0 :(得分:2)
保持关注点分离是一种很好的做法。 所以,我建议你做以下事情:
电影的模型负责获取 其他数据:
var Movie = Backbone.Model.extend({
url: function() {
return 'http://movieapi.com/movie/' + this.movieid;
},
initialize: function(){
this.fetch();
}
});
电影集合可用于获取ID为
的电影列表var Movies = Backbone.Collection.extend({
model: Movie,
url: 'http://movieapi/popular',
// need to intercept the response since the array of movies
// is nested inside the response
parse: function(res) {
if (res && res.movies) {
return res.movies;
}
}
});