Extjs4 Storeクラスのdataプロパティは、オブジェクト階層を記述します。データは静的であるため、これをストアのデータプロパティとして配置します。ストアにデータを入力するためにサーバーに追加の呼び出しを行う必要はありません。これは以前に行ったことがありますが、今回はhasManyの関係が設定されていません。これを修正するためにさまざまな方法を試しましたが、困惑しています。私が何かを逃していないかどうかを確認するためにそれを見ていただけませんか?
オブジェクトの関係は次のとおりです。 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クラス(ネストされた3番目のレイヤー)
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
- IDをに追加する
MarineFormField
- ルートストアの
data
フィールドにタイプミスがないかトリプルチェック
お時間を割いていただきありがとうございます!