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。