如何解决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 举报,一经查实,本站将立刻删除。