変更と構成の2つのモデルが定義されたSenchaTouch2アプリの作成を開始しました。変更は構成に属します。どちらのモデルにもストアが設定されています。変更ストアには、JSON形式で返されるデータを要求するためのプロキシ設定があります。JSONデータには、ネストされた構成による変更があります。変更は問題なく読み込まれますが、変更インスタンスから関連する構成を取得しようとすると、機能しません。
私はこのようにモデルを定義しました:
モデルの変更:
Ext.define('Changes.model.Change', {
extend: 'Ext.data.Model',
xtype: 'changemodel',
config: {
fields: [
{name:'id', type:'int'},
{name:'changeId', type:'string'},
{name:'briefDescription', type:'string'},
{name:'configuration_id', type:'int'}
],
associations: [{
type:'belongsTo',
model:'Changes.model.Configuration',
primaryKey: 'id',
foreignKey: 'configuration_id',
associationKey: 'configurations'
}],
},
});
構成モデル:
Ext.define('Changes.model.Configuration', {
extend: 'Ext.data.Model',
xtype: 'configurationmodel',
config: {
fields: [
{ name: 'id', type: 'int'},
{ name: 'longName', type: 'string' },
{ name: 'ciName', type: 'string' },
],
hasMany: {model: 'Change', name: 'changes'}
}
});
各モデルには店舗があります。
変更ストア:
Ext.define('Changes.store.Changes', {
extend: 'Ext.data.Store',
requires: 'Changes.model.Change',
config: {
model: 'Changes.model.Change',
proxy: {
type: 'ajax',
url: 'services/changes.php',
reader: {
type: 'json',
rootProperty: 'changes'
}
},
sorters: [{ property: 'briefDescription', direction: 'ASC'}],
}
});
構成ストア:
Ext.define('Changes.store.Configurations', {
extend: 'Ext.data.Store',
requires: ['Ext.data.proxy.LocalStorage'],
config: {
model: 'Changes.model.Configuration',
grouper: {
sortProperty: "ciName",
direction: "DESC",
groupFn: function (record) {
return record.get('ciName')[0];
}
},
proxy: {
type: 'ajax',
url: 'services/configurationItems.php',
reader: {
type: 'json',
rootProperty: 'configurationItems'
}
}
}
});
から返される私のJSONはservices/changes.php
次のようになります。
{
"success": true,
"changes": [
{
"id": 1,
"changeId": "XYZ19178263",
"briefDescription": "Loaded from Proxy",
"configuration_id": 3,
"configurations": [
{
"id": "3",
"longName": "999-99_-_windows_7_desktop.Computer.Windows",
"ciName": "999-99_-_windows_7_desktop"
}
]
}
]
}
ブラウザのコンソールで、次のコマンドを発行できます。
Changes.myStore = Ext.getStore('Changes');
Changes.myStore.load();
Changes.record = Changes.myStore.findRecord('id', '1');
Changes.record.getAssociatedData()
最後のコマンドは、構成オブジェクトが内部にあるオブジェクトを返しますが、ランダムな値に設定されているように見えるものをnull
除いて、すべてのフィールド値が表示されます。id
Object
Configuration: Object
ciName: null
id: "ext-record-11"
longName: null
JSONのネストされたConfiguration
インスタンスが保存されない理由を誰かが理解できますか?Configuration
また、JSON内のネストされたインスタンスをConfigurations
ストアに自動的に追加する必要がありますか?