从Panel中删除监听器

时间:2011-03-04 14:36:31

标签: sencha-touch extjs

可以在调用后从Ext.Panel中删除监听器吗? 我有一个tap-Listener,我想在第一次调用后删除它。我尝试了很多方法来删除监听器,但它仍在调用:

registerListeners: function()
{
   // this = Ext.Controller 
   // this.view = Ext.Panel
    this.view.on('tap', this.onTap, this, {element: 'body'});
},

unregisterListeners: function(evt, el, o)
{   
    console.log("Removing Event...");
    this.view.el.un('tap', this.onTap, this);   // Don't work, on the next tap its still calling
},

onTap: function(evt, el, o)
{
    Ext.ControllerManager.get('mycontroller').unregisterListeners();
}

我真的很困惑?!? :(任何建议?

1 个答案:

答案 0 :(得分:4)

是的,您可以在on / addListener调用中设置单个选项。

myButton.on('click', function(){ 
    /* do stuff */ 
}, this, { single : true });

// In your case:
this.view.on('tap', this.onTap, this, {element: 'body', single: true});

http://dev.sencha.com/deploy/touch/docs/?class=Ext.Component

上查看addListener的文档