私はこのjsonを持っています
{
"root":{
"category":[
{
"categoryId":"1",
"children":{
"child":[
{
"subcategoryId":"1",
"children":{
"child":[
{
"productId":"1"
},
{
"productId":"2"
}
]
}
},
{
"subcategoryId":"2",
"children":{
"child":[
{
"productId":"3"
},
{
"productId":"4"
}
]
}
},
{
"subcategoryId":"3",
"children":{
"child":[
{
"productId":"5"
},
{
"productId":"6"
}
]
}
}
]
}
},
{
"categoryId":"2",
"children":{
"child":[
{
"subcategoryId":"4",
"children":{
"child":[
{
"productId":"7"
},
{
"productId":"8"
}
]
}
},
{
"subcategoryId":"5",
"children":{
"child":[
{
"productId":"9"
},
{
"productId":"10"
},
{
"productId":"11"
}
]
}
}
]
}
}
]
}
}
このモデル
Ext.define('ParentMode', {
extend: 'Ext.data.Model',
config: {
fields: [
{name: 'categoryId', type: 'string'},
{name: 'children'} // VERY IMPORTANT TO ADD THIS FIELD
],
proxy: {
type: 'ajax',
url : 'store.php',
reader: {
type: 'json',
rootProperty: 'root.category' // this works fine
}
}
}
})
3 つの異なるビューがあります。最初のビュー「メイン」には、「categoryId」を表示するデータビューがあります。
var myStore = Ext.create('Ext.data.Store', {
model: 'ParentMode',
autoLoad:true
});
var dataview = Ext.create('Ext.DataView', {
scrollable: false,
store: myStore,
listeners: {
itemtap: function(list, index, target, record){
this.up('main').push({
xtype: 'categories',
title: record.get('categoryId'),
extraRecord:record
})
}
}
});
この「メイン」ビューからわかるように、1 つのアイテムがタップされ、「categoryId」を取得する新しいタイトルがそれに割り当てられると、新しいビュー「カテゴリ」がプッシュされ、すべてが正常に機能するようになりました。「カテゴリ」ビューで、すべての「subcategoryId」を次のように表示します。
var dataview = Ext.create('Ext.dataview.DataView', {
store: myStore,
itemTpl: '<tpl for="children.child"><div class="category-thumb">SubcategoryID: {subcategoryId}</div></tpl>',
...
問題は、itemTap で新しいビュー「products」をプッシュし、タイトルを「subcategoryId」に設定するにはどうすればよいかということです。
listeners: {
itemtap: function(list, index, target, record){
this.up('main').push({
xtype: 'products',
title: record.get('subcategoryId'),
})
}
}
問題はそれです
title: record.get('subcategoryId'),
うまくいかないのは、jsonにネストされているためだと思います。サイクルを実行する必要があると思いますが、方法がわかりません。
また、「products」に同じ問題があり、「productsId」を取得するにはどうすればよいですか