Bütün gece bunu anlamaya çalışıyorum ama boşuna.Sencha Touch Data Modeliyle yuvalanmış JSON yapısı nasıl okunur?
{ "parents":{ "parent":[ { "parentId":1, "children":{ "child":[ { "childId":1, }, { "childId":2, } ] } }, { "parentId":2, "children":{ "child":[ { "childId":1, }, { "childId":2, } ] } } ], "pageNum":1, "pageSize":2 } }
Ancak, veri modelleri için doğru yapısı ne olması gerektiğini bilemiyorum: (bu yüzden onun yapısını değiştiremez başka bir sistemden geliyor) aşağıdaki gibi bir JSON yapıya sahiptir. Aşağıdakileri denedim ama işe yaramıyor. BTW, ebeveyn bilgilerine erişebilirim. Mesele çocuk bilgisine erişmektir. Yani, ilişki verilerini nasıl kurduğumda bir sorun var sanırım.
Ext.regStore('ParentModelStore', { model: 'ParentModel', autoLoad:true });
Bana ebeveyn bilgisini alır Aşağıdaki şablonu kullanıyorum, ancak ondan çocuk verilerini alamıyorum:
myapp.views.ParentView = Ext.extend(Ext.Panel, { layout: 'card', initComponent: function() { this.list = new Ext.List({ itemTpl: new Ext.XTemplate( '<tpl for=".">', '<div>', '{parentId}', // this works fine '</div>', '<tpl for="children.child">', // this doesn't work {childId} '</tpl>', '</tpl>', ), store: 'ParentStore', }); this.listpanel = new Ext.Panel({ layout: 'fit', items: this.list, }); this.items = this.listpanel; myapp.views.ParentView.superclass.initComponent.apply(this, arguments); }, }); Ext.reg('ParentView', myapp.views.ParentView);bir veri deposu ile
Ext.regModel("ParentModel", { hasMany: { model: 'ChildrenModel', name: 'children.child' // not too sure about this bit }, fields: [ {name: 'parentId', type: 'string'} ], proxy: { type: 'ajax', url : 'models.json', reader: { type: 'json', root: 'parents.parent' // this works fine } } }); Ext.regModel('ChildrenModel', { belongsTo: 'ParentModel', // not too sure about this bit fields: [{name: 'childId', type: 'string'}] });
Şu anda uğraştığım şey, “çocuk” ve “ebeveyn” öğelerinin, sırasıyla “çocuklar” ve “ebeveynler” gibi başka bir unsur tarafından çevrelenmiş olmasıdır.
Herhangi bir yardım çok takdir edilmektedir. peşin
sayesinde
Philip
PS I dış "çocuk" sarma elemanını kaldırmak ve sadece iç "çocuk" elemanını (ve değişim "children.child" ile "çocuk" içinde bırakırsanız model tanımı) kod iyi çalışıyor. Benim kendi soru yanıtlama
PPS:
Doh! "Çocuk" öğesini ParentModel'in alanlarına eklemeyi unuttum.
aşağıdaki gibi olmalıdır (Not: Ben 'hasMany' ya belirtmek gerek yoktu 'dernek elemanları - Bu ya bunları içeren yararı nedir niçin çok emin değil):
Ext.regModel("ParentModel", { fields: [ {name: 'parentId', type: 'string'}, {name: 'children'} // VERY IMPORTANT TO ADD THIS FIELD ], proxy: { type: 'ajax', url : 'models.json', reader: { type: 'json', root: 'parents.parent' // this works fine } } }); Ext.regModel('ChildrenModel', { fields: [{name: 'childId', type: 'string'}] });
şablon ince çok çalışır: benzer bir problem haline
'<tpl for="children.child">', // this syntax works too. {childId} '</tpl>',
Cool - haritalama işleri, bazen tek bir nesne döndüğü ve bazen bir dizi döndüğü için hala bir sorunum vardı. Ben şu an için gittiğim çözüm ile aşağıdan bir cevap daha ekledim. –