ExtJS Combobox的getValue()能否返回包含多字段值的对象?
ExtJS Combobox getValue() 返回对象的实现方案
默认情况下,Combobox的getValue()方法只会返回你配置的valueField对应的单个字段值(比如把valueField设为ID,就仅返回ID数值),不会直接返回包含多个字段的对象。但要实现返回指定字段(ID、Description1、Description2)的对象,有两种实用方法:
方法1:通过getSelection()提取目标字段
getSelection()方法会返回当前选中的Ext.data.Model实例,你可以用该实例的get()方法提取需要的字段,组装成目标对象:
var selectedRecord = combo.getSelection(); var targetObj = null; if (selectedRecord) { targetObj = { ID: selectedRecord.get('ID'), Description1: selectedRecord.get('Description1'), Description2: selectedRecord.get('Description2') }; }
方法2:重写getValue()直接返回自定义对象
如果希望getValue()本身就返回目标对象,可以重写Combobox的getValue()方法,内部获取选中记录并组装对象返回:
Ext.define('CustomCombo', { extend: 'Ext.form.field.ComboBox', getValue: function() { var record = this.getSelection(); return record ? { ID: record.get('ID'), Description1: record.get('Description1'), Description2: record.get('Description2') } : null; } });
注意事项
重写getValue()前要确认业务中其他依赖该方法的逻辑是否兼容对象类型的返回值(比如表单提交时如果需要原始的valueField值,可能需要额外处理)。
内容的提问来源于stack exchange,提问作者Charles Candy
相关产品推荐
相关产品推荐

