集合中可能有子集合



我正在学习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函数以在其中创建三个集合。当然,您需要预先定义UserCollectionPostCollectionCategoryCollection

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"));

这对我来说很有效。。。在我的情况下

相关内容

  • 没有找到相关文章

最新更新