#javascript #extjs #model #extjs4
#javascript #extjs #Модель #extjs4
Вопрос:
У меня настроены следующие модели (упрощенные):
Ext.define('UserGroup', {
extend: 'Ext.data.Model',
fields: ['GroupID', 'UserID'],
idProperty: '',
associations: [{
type: 'belongsTo',
model: 'User',
primaryKey: 'UserID',
foreignKey: 'UserID',
name: 'users'
}]
)};
Ext.define('User', {
extend: 'Ext.data.Model',
idProperty: 'UserID',
associations: [{
type: 'hasMany',
model: 'UserGroup',
primaryKey: 'UserID',
foreignKey: 'UserID',
name: 'userGroups'
}]
});
У меня уже есть существующие хранилища, загруженные для каждой из этих моделей, с большим количеством связанных данных.
Когда я пытаюсь получить доступ к UserGroup
ассоциации из User
, я не получаю никаких данных обратно.
Ext.getStore('User').getAt(12).userGroups().count(); // returns 0
Я знаю, это потому, что assocation создает свое собственное хранилище. Пока я могу получить соответствующие данные только с помощью
Ext.getStore('User').getAt(12).userGroups().load();
который вызывает сервер для получения этой информации, но затем я должен использовать обратный вызов и ждать ответа.
Итак, как я могу указать хранилище для userGroups
ассоциации, которое будет использоваться, чтобы оно не запрашивало данные с сервера?
Ответ №1:
Afaik, есть два возможных решения:
- Переопределить
Ext.data.HasManyAssociation.createStore
. -
Передайте данные из исходного хранилища в
Ext.data.HasManyAssociation.storeConfig
:Ext.define('User', { extend: 'Ext.data.Model', idProperty: 'UserID', associations: [{ type: 'hasMany', storeConfig: { data: originalStore.getRange() }, // ... }] });
Комментарии:
1. Потрясающе, это выглядит фантастически. Я надеюсь попробовать это на этой неделе. Спасибо!