假设我有一个ModelA实例,它可以'hasMany'ModelB实例。给定服务器上已存在的ModelB记录的id,如何将模型A与模型B关联? (API文档仅显示如何通过同时创建新的模型B实例和数据库记录来执行此操作。)
作为一个例子,假设我有一个应用程序,可用于安排与Person和Meeting对象的会议。服务器可能会为会议返回这样的JSON:
会议:
{
id: '10',
purpose: 'Code review',
time: <timestamp>,
attendees: [ 501, 532 ]
}
人:
{ id: 501, name: 'Kermit', email: 'kermit@thefrog.com' }
模型可能定义如下:
Ext.define('Person', {
extend: 'Ext.data.Model',
fields: ['id', 'name', 'email'],
proxy: {
type: 'rest',
url : 'data/people',
reader: { type: 'json' }
}
});
Ext.define('Meeting', {
extend: 'Ext.data.Model',
fields: ['id', 'purpose', 'time'],
hasMany: { model: 'Person', name: 'attendees' }
proxy: {
type: 'rest',
url : 'data/meetings',
reader: { type: 'json' }
}
});
我理解加载会议后。我可以调用meeting.attendees()来访问每个Person模型。但是,考虑到新的与会者ID(例如,599),如何在会议中添加其他人?是唯一的选项,为id 599加载Person实例,然后将该实例添加到'与会者',像这样吗?
Meeting.load(10, {
success: function(meeting) {
Person.load(599, {
success: function(person) {
meeting.attendees().add(person);
meeting.save();
}
});
}
})
当meeting.save()运行时,POST是否会正确包含该人的ID,如下所示?
{
id: '10',
purpose: 'Code review',
time: <timestamp>,
attendees: [ 501, 532, 599 ] <-- '599' is new attendee
}
谢谢!
答案 0 :(得分:0)
说实话......协会最适合阅读。编辑关联模型不是最好的,因为无法配置编写器或任何东西。对于UI,是的,将新模型添加到您从与会者()获得的商店,但您还需要将其发送回服务器。