Я определил пользовательский компонент 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"},
]
}
я могу иметь несколько таких магазинов, как departmentStore с другой прокси URL и где, ответ сервера может быть
{
"data" : [
{"departmentId": 1, "departmentName": "Sales"},
{"departmentId": 2, "departmentName": "Marketing"},
]
}
Я хочу, чтобы определить отображение в Reader, с инструкциями для отображения данных по-разному в разных магазинов, как в .. employeeId должен быть сопоставлен с «id» & employeeName для «name» в employeeStore, тогда как departmentId должен быть сопоставлен с «id» & departmentName для «name» в departmentStore.
Я видел, что существуют опции для определения отображения для каждого поля в модели, но я хотел бы определить отображение в Reader, так как сервер отвечает данными из реляционной базы данных, где имена полей будут columnNames.
Пара вариантов приходит на ум. 1.) Можете ли вы просто преобразовать данные на сервере для получения обобщенного формата? Если желание состоит в том, чтобы свернуть несколько моделей в одни и те же имена полей, самым простым подходом было бы фактически вернуть данные с сервера, который находится в желаемом формате. 2.) Если вы не хотите этого делать, помните, что магазины могут иметь неявные модели, созданные «на лету» на основе конфигурации полей [], определенной в самом магазине. Это, в сочетании с сопоставлениями для исходных полей, позволит вам сгладить данные хранилища в общую архитектуру поля. – existdissolve