Javascript Backbone.js:组合多个模型的复杂视图

Javascript Backbone.js:组合多个模型的复杂视图,javascript,model-view-controller,backbone.js,Javascript,Model View Controller,Backbone.js,到目前为止,我一直在尝试的所有测试和教程都向我展示了一个视图绑定到一个模型,以便在我的头脑中了解结构 假设我有一个小应用程序来存储和管理联系人详细信息(一个地址簿) 我有多个用户可以登录 他们每个人都有自己的联系人集合 用户详细信息视图将绑定到用户模型 联系人也是如此 但是假设我想展示一个将这两者结合起来的网格 X轴显示应用程序中的所有联系人 Y轴显示所有用户 这是如何工作的?是否需要为此创建新模型以绑定到新视图? 你知道这个想法,它只是一个理论例子,我不是在构建那个应用程序,而是为了得到一个视

到目前为止,我一直在尝试的所有测试和教程都向我展示了一个视图绑定到一个模型,以便在我的头脑中了解结构

假设我有一个小应用程序来存储和管理联系人详细信息(一个地址簿) 我有多个用户可以登录 他们每个人都有自己的联系人集合

用户详细信息视图将绑定到用户模型 联系人也是如此

但是假设我想展示一个将这两者结合起来的网格 X轴显示应用程序中的所有联系人 Y轴显示所有用户

这是如何工作的?是否需要为此创建新模型以绑定到新视图?


你知道这个想法,它只是一个理论例子,我不是在构建那个应用程序,而是为了得到一个视图,它结合了多个模型

,在这种情况下,我会考虑两个子模型的动态模型。在路由处理程序中,可以执行以下操作:

var model = new Backbone.Model();
model.set({contacts: new ContactsModel(), users: new UsersModel()});
var view = new GridView({model: model});
当然,没有什么可以阻止您单独传递模型:

var contacts = new ContactsModel();
var users = new UsersModel();
var view = new GridView({model: contacts, users: users})

我仍然更喜欢第一种方法的复合方法,因为它不会混淆模型是什么
var modelA = new myModel({ color: "blue" });
var modelB = new otherModel({ age: 35 });

var superModel = new Backbone.Model();
superModel.set(modelA);
superModel.set(modelB);

console.log("color:", superModel.get("color"));
console.log("age:", superModel.get("age"));

请看一下主干网.Model.extend()以及

谢谢你的信息,我已经知道我可以做类似于第二种方法的事情,但是正如你所说,我也会觉得很奇怪,因为它会将联系人定义为模型,而用户只是一些额外的信息。。。我不知道这种动态模型结构,我必须在我的真实实体之间创建并存储一个全新的模型。谢谢你的洞察力!在这种情况下,如何处理model.fetch()?您的模型没有url。要从视图中访问这两个模型,请参阅