问题描述
|
我在使用以下应用进行正确的范围设置时遇到问题。到我叫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);