Backbone.js 集合中是否可能有子集合?
我正在学习Backbone.js 集合中是否可能有子集合?,backbone.js,Backbone.js,我正在学习Backbong.js,并尝试使用Backbong.js开发和改造一个项目。由于该项目已经有了API,并在不同的平台、iphone应用程序、andorid应用程序和web中使用 我的问题是,有一个API返回,如下所示 { success: true, response: { posts: [{...post data...}, {...post data...}, {...post data...}], users: [{...u
Backbong.js
,并尝试使用Backbong.js
开发和改造一个项目。由于该项目已经有了API,并在不同的平台、iphone应用程序、andorid应用程序和web中使用
我的问题是,有一个API返回,如下所示
{
success: true,
response: {
posts: [{...post data...}, {...post data...}, {...post data...}],
users: [{...user data...}, {...user data...}],
categories: [{...category data...}, {...category data...}]
}
}
作为主干文档
集合可以包含许多模型
典型的设计是
// 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;
}
});
不确定您为什么想要一个不是单个集合的集合。这听起来像是(如果这是错误的,请纠正我),您需要一种从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"));
这对我来说很有效。。。在我的例子中您可以拥有一个包含集合的模型
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"));
这对我来说很有效。。。在我的例子中如果我要查询该主集合的下一页,该如何处理?请注意,每当ApplicationModel获取时,无论是新页面还是其他页面,都将调用parse。如果我要查询该主集合的下一页,该如何处理?请注意,每当ApplicationModel获取时,无论是新页面还是其他页面,都将调用parse。