Ich habe eine Liste, die eine Liste von Restaurants mit dem Logo des Restaurants zeigt usw.Anzeige eine Liste von verschachtelten json: Sencha Touch 2
Der Blick
Ext.define('Test.view.Contacts', {
extend: 'Ext.List',
xtype: 'contacts',
config: {
title: 'Stores',
cls: 'x-contacts',
store: 'Contacts',
itemTpl: [
'<div class="headshot" style="background-image:url(resources/images/logos/{logo});"></div>',
'{name}',
'<span>{add1}</span>'
].join('')
}
});
Wenn Sie das tippen Restaurant Ich möchte, dass es eine andere Liste basierend auf dem getoppten Element zeigt.
Die zweite Ansicht
Ext.define('Test.view.Menu', {
extend: 'Ext.List',
xtype: 'contact-menu',
config: {
title: 'Menu',
cls: 'x-contacts',
store: 'Contacts',
itemTpl: [
'<div>{item}</div>'
].join(''),
},
});
Die Modelle
Ext.define('Test.model.Contact', {
extend: 'Ext.data.Model',
config: {
fields: [
'name',
'logo',
'desc',
'telephone',
'city',
'add1',
'post',
'country',
'latitude',
'longitude'
],
proxy: {
type: 'ajax',
url: 'contacts.json'
}
},
hasMany: {
model: "Test.model.Menus",
name: 'menus'
}
});
Ext.define('Test.model.Menus', {
extend: 'Ext.data.Model',
config: {
fields: [
'item'
]
},
belongsTo: "Test.model.Contact"
});
Der Speicher
Ext.define('Test.store.Contacts', {
extend: 'Ext.data.Store',
config: {
model: 'Test.model.Contact',
autoLoad: true,
//sorters: 'name',
grouper: {
groupFn: function(record) {
return record.get('name')[0];
}
},
proxy: {
type: 'ajax',
url: 'contacts.json',
reader: {
type: 'json',
root: 'stores'
}
}
}
});
Die JSON
{
"stores": [{
"name": "Science Gallery",
"logo": "sciencegallery.jpg",
"desc": "Get some food",
"telephone": "016261234",
"city": "Dublin",
"add1": "Pearse Street",
"post": "2",
"country": "Ireland",
"latitude": "53.34422",
"longitude": "-6.25006",
"menu": [{
"item": "SC Sandwich"
}, {
"item": "SC Toasted Sandwich"
}, {
"item": "SC Panini"
}, {
"item": "SC Ciabatta"
}, {
"item": "SC Burrito"
}]
}, {
"name": "Spar",
"logo": "spar.jpg",
"desc": "Get some food",
"telephone": "016261234",
"city": "Dublin",
"add1": "Mayor Street",
"post": "2",
"country": "Ireland",
"latitude": "53.34422",
"longitude": "-6.25006",
"menu": [{
"item": "Spar Sandwich"
}, {
"item": "Spar Toasted Sandwich"
}, {
"item": "Spar Panini"
}, {
"item": "Spar Ciabatta"
}, {
"item": "Spar Burrito"
}]
}]
}
Ich möchte eine Liste von Menüpunkten zeigen (Artikel, Artikel, Artikel ...) für das Restaurant selectedbut, wenn ich eine verschachtelte Liste verwenden muss ich die gleiche Vorlage wie die vorherige verwenden Liste, die nicht meinen Bedürfnissen entspricht. Im Moment bekomme ich die richtige Menge an Gegenständen, aber nichts zeigt. Kannst du mir bitte helfen, wo ich falsch liege, danke.
Vielen Dank für Ihre Antwort @rdougan, werde es versuchen, und ich werde Ihre Antwort bestätigen. – Wadester
Sorry @rdougan Ich habe versucht das Beispiel, das Sie zur Verfügung gestellt, ich habe so weit bekommen, aber jetzt will ich die Liste der Restaurants zuerst anzeigen und dann, wenn Sie eine von ihnen tippen, wird es eine andere Liste nur der Menüpunkte zeigen, können Sie helfen Ich mit dem Erreichen dieses. – Wadester
Haben Sie es sortiert, verwendet eine verschachtelte Liste mit tpl für die verschiedenen Knoten. – Wadester