1

我正在学习Backbone.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...}]
     }
}

作为骨干文档

aCollection可以包含许多模型

通常设计是

// 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 种类型的“对象”放入集合中?谢谢

4

2 回答 2

2

不确定为什么您想要一个不是单个集合的集合。听起来(如果这是错误的,请纠正我),您想要一种从 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;
    }
});
于 2013-06-26T11:12:01.843 回答
2

你可以有一个包含集合的模型

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

这对我来说效果很好......在我的情况下

于 2013-06-26T11:47:09.053 回答