次のような Offering オブジェクトの着信配列があります。
[{
"id" : 16,
"price" : 500,
"quantity" : 2000,
"denomination" : "case",
"denominationPlural" : "cases",
"product" : {
"id" : 14,
"description" : "This is the text description for product 14."
}
}, {
"id" : 18,
"price" : 500,
"quantity" : 1,
"denomination" : "study",
"denominationPlural" : "studies",
"product" : {
"id" : 17,
"description" : "This is a text description for product 17."
}
}]
オファリングは、製品×価格の数量です。
これらのオファリングを GridPanel に表示するだけでなく、ネストされた製品情報もそれらの行に含めたいと考えています。これが私が以前にやっていた方法です:
Ext.define('Offering', {
extend: 'Ext.data.Model',
fields: [
{name: 'id', type: 'number'},
{name: 'price', type: 'number'},
{name: 'quantity', type: 'number'},
{name: 'denomination', type: 'string'},
{name: 'denominationPlural', type: 'string'},
{name: 'product.description', type: 'string'},
]
});
var offeringStore = Ext.create('Ext.data.Store', {
autoDestroy: true,
model: 'Offering',
proxy: {
type: 'ajax',
url: '/offerings',
reader: {
type: 'json',
root: 'success'
}
},
autoLoad:true
});
var offeringGrid = Ext.create('Ext.grid.Panel', {
store: offeringStore,
columns: [{
header: 'id',
dataIndex: 'id'
}, {
header: 'price',
dataIndex: 'price'
}, {
header: 'quantity',
dataIndex: 'quantity'
}, {
header: 'denomination',
dataIndex: 'denomination'
}, {
header: 'description',
dataIndex: 'product.description'
},
};
そして、これはうまくいきました。その後、(ExtJS 4.2.1 から ExtJS 5.1.1 へのアップグレードと Sencha Architect の使用を含む) 途中で壊れてしまいました。
問題 1: Sencha Architect は、「.」について不平を言って、提供モデルで「product.description」のエントリを作成することを妨げます。キャラクター。ただし、「whateveryouwant」として作成する場合は、モデル フィールドに移動して、そこで「product.description」に名前を変更できます。
問題 2: "." を回避した後 アプリケーションを発行して実行すると、「product.description」列のセルが空白になります。
問題 3: JavaScript コンソールでエラーが発生しません。受信データは正常に見えます。
このネストされたデータを表示するにはどうすればよいですか?