PhoneGap和Sencha touch的作用域问题

问题描述

| 我在使用以下应用进行正确的范围设置时遇到问题。到我叫this.fireEvent时,我的作用范围不再是我的应用程序,而是文档窗口。 有任何想法吗? DN.App = Ext.extend(Ext.Panel,{     initComponent:function(){         document.addEventListener(\“ backbutton \”,this.backKey,true);         DN.App.superclass.initComponent.call(this);    },     setActivePanel:function(){         //用于切换面板的全局处理程序     },     backKey:function(){         var prev = DN.App.prevPanel [DN.App.prevPanel.length-1];         DN.App.prevPanel.pop();         //这处理面板的切换,但此时\'this \'的作用域为html文档         this.fireEvent(\'setActivePanel \',prev);     } }); 找到了答案 ah,我在此工作了两个小时,然后再发布,然后在8分钟后确定。我尝试使用
DN.App.fireEvent
,但这也没有用。那时我意识到DN.App只是我创建的类,而不是实际的对象。在另一个文件中,我将其称为
DNApp = new DN.App();
看到我尝试了
DNApp.fireEvent
并且效果很好。     

解决方法

        问题是\“ document.addEventListener(\” backbutton \“,this.backKey,true); \”,当事件被触发时,期望\“ this \”关键字绑定到触发它的对象,您可以通过关闭来实现您想要的:
document.addEventListener(\"backbutton\",(function(self){ return function(){ self.backKey(); }; })(this),true);