我正在学习Backbone.js
,并尝试使用Backbong.js
开发改造项目。由于该项目已经有了API,并在不同的平台上使用,iphone应用程序、Android应用程序和web。
我的问题是,有一个API返回如下
{
success: true,
response: {
posts: [{...post data...}, {...post data...}, {...post data...}],
users: [{...user data...}, {...user data...}],
categories: [{...category data...}, {...category data...}]
}
}
作为的主干文档
Collection
可以包含许多型号的
通常设计为
// Post Model
var PostModel = Backbone.Model.extend({
...
})
// User Model
var UserModel = Backbone.Model.extend({
...
})
// Category Model
var UserModel = Backbone.Model.extend({
...
})
var PostListCollection = Backbone.Collection.extend({
model: PostModel
})
所以。。。如何将这3种类型的"对象"放入集合中?感谢
不确定为什么您想要一个不是单个集合的集合。听起来(如果这是错误的,请纠正我),您需要一种从API获取数据并将其转入三个集合的巧妙方法。
您可以创建一个从API获取的模型,该模型实现了一个自定义parse
函数以在其中创建三个集合。当然,您需要预先定义UserCollection
、PostCollection
和CategoryCollection
。
ApplicationModel = Backbone.Model.extend({
url: '/apiUrl/',
parse: function(data)
{
var result = {};
result.users = new UserCollection(data.users);
result.posts= new PostCollection(data.posts);
result.categories = new CategoryCollection(data.categories);
return result;
}
});
您可以有一个包含集合的模型
var ResultModel = Backbone.Model.extend({
default: {
Users: [],
Posts: [],
Categories: []
}
});
然后以通常的方式实现集合。
所以,当你试图获得子集合时。。。
var result = new ResultModel("your result JSON object");
var users = new UserCollection(result.get("Users"));
var posts = new PostCollection(result.get("Posts"));
var categories = new CategoryCollection(result.get("Category"));
这对我来说很有效。。。在我的情况下