Всем привет. Понадобилось отображать данные в гриде из связанного стор/модели.
Делаю все по мануалу, пробовал и reference у поля и hasOne у модели.
Подскажите пожалуйста, как это правильно реализовать.
Вот фидл с примером:
https://fiddle.sencha.com/#fiddle/1j1e
Или код, кому не охото на фидл ходить:
Ext.application({
name : 'Fiddle',
launch : function() {
Ext.define('Fiddle.model.Base', {
extend: 'Ext.data.Model',
schema: {
namespace: 'Fiddle.model'
}
});
Ext.define('Fiddle.model.Users', {
extend: 'Fiddle.model.Base',
fields: [
{ type: 'int', name: 'id' },
{ type: 'string', name: 'fullName' }
]
});
Ext.define('Fiddle.model.UsersCount', {
extend: 'Fiddle.model.Base',
fields: [
{ type: 'int', name: 'id',
reference: {
type: 'Users',
role: 'user'
}
},
{ type: 'int', name: 'count' }
],
hasOne: {
model: 'Fiddle.model.Users',
name: 'user',
foreginKey: 'id'
}
});
Ext.define('Fiddle.store.Users', {
extend: 'Ext.data.Store',
model: 'Fiddle.model.Users',
data: [
{ id: 1, fullName: 'Leonardo' },
{ id: 2, fullName: 'Donatello' },
{ id: 3, fullName: 'Raphael' }
]
});
Ext.define('Fiddle.store.UsersCount', {
extend: 'Ext.data.Store',
model: 'Fiddle.model.UsersCount',
data: [
{ id: 1, count: 150 },
{ id: 2, count: 320 }
]
});
Ext.create('Ext.grid.Panel', {
renderTo: Ext.getBody(),
store: new Fiddle.store.UsersCount,
columns: {
items: [
{ text: 'Id', dataIndex: 'id' },
{ text: 'FullName', dataIndex: 'user.fullName' },
{ text: 'Count', dataIndex: 'count' }
]
}
});
var usersCount = new Fiddle.store.UsersCount();
var users = new Fiddle.store.Users();
console.log(usersCount.first().getUser());
}
});