我有一个包含int数组的模型。我想显示一个可以编辑这个int数组的表单。
// Form definition
var form = Ext.create('Ext.form.Panel', {
items: [
/* .. */
]
});
form.loadRecord(record);
record.states
是int
的数组,例如:[2, 7]
对于表单,我尝试了两种方法,但没有一种方法可以按预期工作。
第一路:
var form = Ext.create('Ext.form.Panel', {
items: [{
xtype: 'combo',
fieldLabel: 'States',
name: 'states',
multiSelect: true,
store: [[1, 'Alabama'], [2, 'California'], [3, 'New York'], [7, 'Georgia']]
}]
});
问题是:
states
,我希望states[]
适合我的php后端loadRecord
不起作用,只显示2, 7
并且未预先选择组合中的项目(此处为加利福尼亚州和佐治亚州)第二路:
var form = Ext.create('Ext.form.Panel', {
items: [{
xtype: 'combo',
fieldLabel: 'States',
name: 'states[]',
multiSelect: true,
store: [[1, 'Alabama'], [2, 'California'], [3, 'New York'], [7, 'Georgia']]
}]
});
问题是:
loadRecord
没有做任何事情,组合保持空白。我确信这是一些我不知道的常见行为,有人可以指出我正确的方向吗?非常感谢你。
答案 0 :(得分:0)
我终于想出了如何做到这一点
var form = Ext.create('Ext.form.Panel', {
items: [{
xtype: 'combo',
fieldLabel: 'States',
name: 'states[]',
multiSelect: true,
store: [[1, 'Alabama'], [2, 'California'], [3, 'New York'], [7, 'Georgia']],
value: record.states
}]
});
我不使用loadRecord
并直接设置字段定义中的值。此外,您必须确保值与商店密钥的类型相同。我不得不做
value: record.states.map(function(v) { return parseInt(v); })
因为我的数组是一个字符串数组。