У меня есть следующие данные:Наполнение связанные модели с вложенной JSON
var data = [
{
id: 1,
name: 'Ed Spencer',
phoneNumber: '555 1234',
children: [{
id: 11,
name: 'Baz'
}]
},
{
id: 2,
name: 'Abe Elias',
phoneNumber: '666 1234',
children: [{
id: 21,
name: 'Foo'
},{
id: 21,
name: 'Bar'
}]
}
];
Есть ли способ, чтобы загрузить его в некоторых моделях и в магазине, как это?
Ext.define('Child', {
extend: 'Ext.data.Model',
fields: [
{name: 'id', type: 'int'},
{name: 'user_id', type: 'int'},
{name: 'name', type: 'string'}
],
belongsTo: 'User'
});
Ext.define('User', {
extend: 'Ext.data.Model',
fields: [
{name: 'id', type: 'int'},
{name: 'name', type: 'string'},
{name: 'phone', type: 'string', mapping: 'phoneNumber'}
],
hasMany: {model: 'Child', name: 'children'}
});
var store = Ext.create('Ext.data.Store', {
autoLoad: true,
model: 'User',
data : data
});
Я только нашел один способ сделать это до сих пор, обернув по магазину:
store.each(function(r){
r.childrens().loadData(r.data.children);
});
Но это не кажется большим.
Я только хочу загрузить данные один раз. Я действительно не хочу указывать внешний ключ в каждом дочернем элементе, так как мои данные уже структурированы.
Кто-нибудь сделал что-то подобное? Есть ли лучший способ приблизиться к этому?