我在json中收到以下值:
Alarm: "1"
Categories: ["P"]
Users: ["Alexander","Moritz"]
并将其加载到包含以下内容的表单中:
form.load({
method:"GET",
url:'GetSimpleProtocol.json'
})
表单字段为:
{
type:'checkbox',
name:'Alarm',
boxLabel: 'Alarmieren',
inputValue: '1'
},{
xtype: 'combobox',
fieldLabel: 'Kategorie',
name: 'Categories',
store:['P'],
multiSelect: true,
},{
xtype: 'textareafield',
fieldLabel: 'Label',
name: 'Users'
}
当我直接提交时:
form.submit({
url:'SaveSimpleProtocol.json'
})
提交POST中的字段值已更改,与第一个文件中的字段值相反:
Alarm: true
Categories: [{field1:"P"}]
Users: "Alexander,Moritz"
在提交之前,我可以告诉我的组件或表单将这些值更改回所需的格式吗?
答案 0 :(得分:0)
ComboBox提交值是由代码问题引起的(组合框仅在将值加载到表单后填充了选择项。如果你之前这样做,它就像魅力一样)
另外两个,我通过推导新组件解决了这个问题。
获取并提交行数组的ExtJS TextArea:
Ext.define('MyApp.ux.ArrayTextArea', {
extend:'Ext.form.field.TextArea',
alias: ['widget.arraytextareafield'],
valueToRaw:function(value) {
if(Ext.isArray(value)) return value.join("\n");
return this.callParent([value]);
},
rawToValue:function(value) {
if(Ext.isString(value)) {
if(value.length==0) return [];
return value.split("\n");
}
return this.callParent([value]);
}
});
ExtJS Checkbox返回inputValue / uncheckedValue而不是true / false:
Ext.define('TimeFleX.ux.StringCheckbox', {
extend:'Ext.form.field.Checkbox',
alias: ['widget.stringcheckbox'],
getValue:function() {
if(this.checked) return this.inputValue;
return this.uncheckedValue;
}
});