and*_*nes 1 model extjs store extjs4
我有以下数据:
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'
}]
}
];
Run Code Online (Sandbox Code Playgroud)
有没有办法将它加载到某些模型和商店,像这样?
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
});
Run Code Online (Sandbox Code Playgroud)
到目前为止,我只找到了一种方法来循环遍历商店:
store.each(function(r){
r.childrens().loadData(r.data.children);
});
Run Code Online (Sandbox Code Playgroud)
但这似乎并不好.
我只想加载一次数据.我真的不想在每个孩子中指定外键,因为我的数据已经结构化了.
有没有人做过类似的事情?有没有更好的方法来解决这个问题?
我想我已经修好了.显然你需要在你的商店里使用一个阅读器,即使它只是一个内存,如下所示:
var store = Ext.create('Ext.data.Store', {
autoLoad: true,
model: 'User',
data : data,
proxy: {
type: 'memory',
reader: {
type: 'json'
}
}
});
Run Code Online (Sandbox Code Playgroud)
然后它将填充所有模型,生成其关联而无需外键.
我假设没有代理,数据以不同的方式加载,这不会填充我的模型.
| 归档时间: |
|
| 查看次数: |
7316 次 |
| 最近记录: |