我已经定义了一个自定义 ComboBox 组件,我想在多个商店中重复使用它。它有一个简单的配置,如下所示。
Ext.define('Myapp.CustomCombo', {
extend: 'Ext.form.ComboBox',
valueField: 'id',
displayField: 'name'
});
模型是
Ext.define('Myapp.model.ComboModel',{
extend: 'Ext.data.Model',
fields: [
{ name: 'id', type: 'int' },
{ name: 'name', type: 'string' },
{ name: 'linkCls', type: 'string' }
]
});
我定义了多个商店,每个商店都有自己的代理配置并由唯一的 storeId 标识,如下所示
Ext.create('Myapp.store.EmployeeComboStore', {
model: 'Myapp.model.ComboModel',
storeId: 'employeeLOVComboStore',
proxy: {
type: 'rest',
url: '/employees/getLovData',
reader: {
type: 'json',
rootProperty: 'data'
}
}
});
服务器响应如下 json
{
"data" : [
{"employeeId": 1, "employeeName": "Chris"},
{"employeeId": 2, "employeeName": "Jack"},
]
}
我可以有多个这样的商店,例如具有不同代理 URL 的部门商店,并且服务器响应可能是
{
"data" : [
{"departmentId": 1, "departmentName": "Sales"},
{"departmentId": 2, "departmentName": "Marketing"},
]
}
我想在阅读器中定义一个映射,说明在不同的商店中以不同的方式映射数据,如..employeeId 应该映射到employeeStore 中的“id”和employeeName 到“name”,而departmentId 应该映射到“id” & departmentName 到 departmentStore 中的“名称”。
我已经看到有一些选项可以为模型中的每个字段定义映射,但我想在阅读器中定义一个映射,因为服务器使用来自关系数据库的数据进行响应,其中字段名称将是 columnNames。