Marc-QNX
18 Oct 2011, 10:40 AM
I'm having an issue where the 'tap' event is not firing on nested components.
For example, this works perfectly:
Ext.define('MyApp.view.Home', {
extend: 'Ext.Panel',
xtype: 'homeView',
config: {
fullscreen: true,
layout: 'fit',
items: [{
xtype: 'dataview',
itemTpl: '{label}',
store: 'Items',
scrollable: false,
listeners: {
itemtap: function (dataview, index, item, e)
{
alert('test');
}
}
}]
},
});
However, if I do the following, the event never triggers
Ext.define('MyApp.view.Home', {
extend: 'Ext.Panel',
xtype: 'homeView',
requires: [
'MyApp.view.home.HomeDataview'
],
config: {
fullscreen: true,
layout: 'fit',
items: [{
xtype: 'homedataview',
}]
},
});
Ext.define('MyApp.view.home.HomeDataview', {
extend: 'Ext.dataview.DataView',
xtype : 'homedataview',
config: {
xtype: 'dataview',
itemTpl: '{label}',
store: 'Items',
scrollable: false,
listeners: {
itemtap: function (dataview, index, item, e)
{
alert('test');
}
}
},
});
Am I missing something?
I also tried to do this from the controller via this.control() but no luck there either:
Ext.define('MyApp.controller.Home', {
extend: 'Ext.app.Controller',
views : [
'Home',
],
stores: [
'Items'
],
refs: [
{
ref : 'homeView',
selector: 'homeView',
xtype : 'homeView'
},
],
init: function() {
this.getHomeView().create();
this.control({
'homedataview': {
tap: this.onItemTap
},
});
},
onItemTap: function (dataview, index, item, e)
{
alert('test')'
}
});
Any thoughts?
For example, this works perfectly:
Ext.define('MyApp.view.Home', {
extend: 'Ext.Panel',
xtype: 'homeView',
config: {
fullscreen: true,
layout: 'fit',
items: [{
xtype: 'dataview',
itemTpl: '{label}',
store: 'Items',
scrollable: false,
listeners: {
itemtap: function (dataview, index, item, e)
{
alert('test');
}
}
}]
},
});
However, if I do the following, the event never triggers
Ext.define('MyApp.view.Home', {
extend: 'Ext.Panel',
xtype: 'homeView',
requires: [
'MyApp.view.home.HomeDataview'
],
config: {
fullscreen: true,
layout: 'fit',
items: [{
xtype: 'homedataview',
}]
},
});
Ext.define('MyApp.view.home.HomeDataview', {
extend: 'Ext.dataview.DataView',
xtype : 'homedataview',
config: {
xtype: 'dataview',
itemTpl: '{label}',
store: 'Items',
scrollable: false,
listeners: {
itemtap: function (dataview, index, item, e)
{
alert('test');
}
}
},
});
Am I missing something?
I also tried to do this from the controller via this.control() but no luck there either:
Ext.define('MyApp.controller.Home', {
extend: 'Ext.app.Controller',
views : [
'Home',
],
stores: [
'Items'
],
refs: [
{
ref : 'homeView',
selector: 'homeView',
xtype : 'homeView'
},
],
init: function() {
this.getHomeView().create();
this.control({
'homedataview': {
tap: this.onItemTap
},
});
},
onItemTap: function (dataview, index, item, e)
{
alert('test')'
}
});
Any thoughts?