コントローラを使用してリストアイテムのレコードを詳細ビューに渡そうとしている次のコードがあります。データは渡されず、詳細ビューには何も表示されません。
Main.js:
Ext.define('EventsTest.view.Main', {
extend: 'Ext.navigation.View',
xtype: 'main',
requires: [
'EventsTest.store.Venues',
'Ext.dataview.List'
],
config: {
items: [
{
xtype: 'list',
id: 'venuesList',
itemTpl: '{name}, {distance}',
store: 'Venues',
onItemDisclosure: true,
styleHtmlContent: true
}
]
}
});
MainView.js:
Ext.define('EventsTest.view.MainView', {
extend: 'Ext.Container',
xtype: 'mainView',
config: {
title: JSON.stringify(this.data),
styleHtmlContent: true,
scrollable: true,
items: [
{
xtype: 'panel',
tpl: '<tpl for="."><h3>{name}</h3><br /><p>{distance}</p></tpl>',
flex: 1
}
]
}
});
Main.js(コントローラー:record.data(コード全体の多くの例で見られるように)とrecord.getData()の両方を試しました
Ext.define('EventsTest.controller.Main', {
extend: 'Ext.app.Controller',
config: {
refs: {
venuesList: '#venuesList',
},
control: {
venuesList: {
disclose: 'showItemDetail'
}
}
},
showItemDetail: function(item, record) {
item.up('navigationview').push( {
xtype: 'mainView',
data: record.getData()
});
}
});
Venue.js(モデル):
Ext.define('EventsTest.model.Venue', {
extend: 'Ext.data.Model',
config: {
fields: ['name', 'distance']
}
});
Venues.js(ストア):
Ext.define('EventsTest.store.Venues', {
extend: 'Ext.data.Store',
reqiures: [
'EventsTest.model.Venue'
],
config: {
model: 'EventsTest.model.Venue',
data: [
{ name: 'Johnny', distance: '5 km' },
{ name: 'Billy', distance: '6 km' },
{ name: 'Sarah', distance: '7 km' },
{ name: 'William', distance: '8 km' },
]
}
});