-
30 Nov 2011 3:48 PM #1
Answered: Tap event question
Answered: Tap event question
Hello,
I'm trying to listen to a tap event but I can't get it working. Here's how my app.js file looks like:
The 'show' event works, but the 'tap' event doesn't. Could someone please help me?Code:var panel = Ext.create('Ext.Panel', { style: 'background-color: green;', listeners: { show: function() { alert('hello'); } } }); panel.addListener({ body: { tap: function() {alert('tap');} }, scope: this }); //panel.addListener('tap', // function() {alert('tap');}, // this, // {element: 'body'} //); Ext.application({ name: 'Test App', launch: function() { Ext.Viewport.add(panel); } });
Thank you!
-
Best Answer Posted by rdougan
Your first code block is not working because you are creating a panel (which does NOT mean it is rendered), then adding it to the viewport (which does mean it is rendered). You should add it to the viewport, then add the listener. This should work.
-
30 Nov 2011 4:37 PM #2
Using the 'body' property in addListener/on does not work in PR2. You'll need to get the element directly and add the listener:
Code:panel.element.on('tap', this.doSomething);Sencha Inc.
Robert Dougan - @rdougan
Sencha Touch 2 and Ext JS 4 Core Team Member, SASS/Theming Wizard.
-
2 Dec 2011 5:04 AM #3
Robert, thank you for taking the time to answer me.
I've tried this, not working:
Is it maybe because of the Ext.application call?Code:var panel = Ext.create('Ext.Panel', { style: 'background-color: green;', listeners: { show: function() { alert('hello'); } } }); panel.element.on('tap', function() {alert('tap');}); Ext.application({ name: 'Test App', launch: function() { Ext.Viewport.add(panel); } });
-
2 Dec 2011 5:36 AM #4
This worked, but why?
This worked, but why?
OK, this worked:
But why?Code:Ext.setup({ onReady: function() { var panel = Ext.create('Ext.Panel', { style: 'background-color: green;', listeners: { show: function() { alert('hello'); } } }); // This works // panel.element.on('tap', function() {alert('tap');}); // This also works // panel.body.addListener('tap', function() {alert('tap');}); // This also works // panel.body.addListener({ // // tap: function() {alert('tap');} // // }); // This also works panel.element.addListener({ tap: function() {alert('tap');} }); // This doesn't work // panel.addListener({ // element: { // tap: function() {alert('tap');} // } // }) Ext.Viewport.add(panel); } });
Last edited by AlexandraN; 2 Dec 2011 at 5:48 AM. Reason: some more code
-
3 Dec 2011 5:10 PM #5
Your first code block is not working because you are creating a panel (which does NOT mean it is rendered), then adding it to the viewport (which does mean it is rendered). You should add it to the viewport, then add the listener. This should work.
Sencha Inc.
Robert Dougan - @rdougan
Sencha Touch 2 and Ext JS 4 Core Team Member, SASS/Theming Wizard.
-
4 Dec 2011 4:59 AM #6
Yes! It worked! Thank you very much!
Code:var panel = Ext.create('Ext.Panel', { style: 'background-color: green;', listeners: { show: function() { alert('hello'); } } }); Ext.application({ name: 'Test App', launch: function() { Ext.Viewport.add(panel); panel.element.on('tap', function() {alert('tap');}); } });


Reply With Quote