Model 在ExtJS 4.1.1中,以包含combo multiSelect=true的形式加载嵌套模型
以下是我的代码的简化版本:Model 在ExtJS 4.1.1中,以包含combo multiSelect=true的形式加载嵌套模型,model,combobox,nested,extjs4.1,multi-select,Model,Combobox,Nested,Extjs4.1,Multi Select,以下是我的代码的简化版本: Ext.define('MyApp.model.Folder', { extend: 'Ext.data.Model', fields: ['id', 'name'] }); Ext.define('MyApp.model.User', { ..., hasMany: { model: 'Folder', name: 'folders' } }); var form = Ext.widget('form', { ...,
Ext.define('MyApp.model.Folder', {
extend: 'Ext.data.Model',
fields: ['id', 'name']
});
Ext.define('MyApp.model.User', {
...,
hasMany: { model: 'Folder', name: 'folders' }
});
var form = Ext.widget('form', {
...,
items: {
xtype: 'combo',
name: 'folders',
multiSelect: true,
valueField: 'id',
displayField: 'name',
queryMode: 'local',
store: 'Folders'
}
});
User.load(1, {
success: function (user) {
form.loadRecord(user);
}
});
用户模型加载的数据:
{
...,
folders: [
{ id: 1, name: 'folder 1' },
{ id: 2, name: 'folder 2' }
]
}
假设所有内容(用户模型和存储)都加载成功,并且存储包含文件夹1、2、N,我希望组合选择传递给
loadRecord
方法(文件夹1和2)的值,但字段保持为空。提前感谢您的帮助。发布此问题后,我找到了解决方案。然而,我想这肯定不是“最佳实践”的一部分,因此,在等待更好的实践时,这里有一个好的选择:
Ext.define('MyApp.model.User', {
...,
hasMany: { model: 'Folder', name: 'folders' },
fields: [..., {
name: 'folders',
convert: function (folders) {
return Ext.Array.map(folders, function (folder) {
return folder.id;
});
}
}]
});
有人找到更好的解决办法吗?