我的Extjs4 Store类的data属性描述了一个对象层次结构。我把它作为我商店的数据属性,因为数据是静态的;没有必要额外调用服务器来填充商店。我以前做过这个,但这次我的很多关系都没有填充。我已经尝试了各种方法来解决这个问题,但我很难过。你会看看它是否遗漏了什么吗?
对象的关系是:MarineForm has MarineFormSections which has MarineFormFields
包含数据属性的商店:
Ext.define('MAP.store.MarineFormStore', {
extend: 'Ext.data.Store',
model: 'MAP.model.MarineForm',
data:[
{
species:'Mackerel',
gear:null,
sections:[
{
name:'General Info',
formFields:[
{
xtype:'textfield',
name:'firstField',
allowBlank:false,
fieldLabel:'First Field'
}
]
}
]
}
]
});
根模型:
Ext.define('MAP.model.MarineForm', {
extend: 'Ext.data.Model',
fields: [
{name: 'species', type: 'string'},
{name: 'gear', type: 'string'}
],
hasMany: {
model: 'MAP.model.MarineFormSection',
name: 'sections'
}
});
hasMany类:
Ext.define('MAP.model.MarineFormSection', {
extend: 'Ext.data.Model',
fields: [
'id',
{name: 'name', type: 'string'}
],
hasMany: {
model: 'MAP.model.MarineFormField',
name: 'formFields'
}
});
hasMany的hasMany类(第三层嵌套)
Ext.define('MAP.model.MarineFormField', {
extend: 'Ext.data.Model',
fields: [
'name',
{name:'allowBlank', type:'boolean'},
'fieldLabel',
'xtype',
//next ones are for comboboxes. Not used all the time. -jg
'store',
'valueField',
'displayField'
]
});
以下是在Chrome中查询商店的输出:
rootStore = Ext.getStore('MarineFormStore') // -> the store
sections = rootStore.getAt(0).sections() // -> hasMany store
sections.getCount() // -> 0
我试过了:
MarineFormField hasMany
MarineFormFields
块
MarineFormField
data
字段感谢您抽出宝贵时间!
答案 0 :(得分:0)
在我看来,你所缺少的就是你的商店配置(或者你不太可能忘记加载商店):
proxy: {
type: 'memory',
reader: {
type: 'json',
}
},
This JsFiddle几乎是包含此更改的代码,它似乎工作正常。