微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PhoneGap和Sencha touch的作用域问题

如何解决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);
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。