我在使用以下应用程序获取某些范围时遇到问题。当我调用this.fireEvent时,我不再使用我的应用程序,而是文档窗口。
有什么想法吗?
DN.App = Ext.extend(Ext.Panel, { initComponent: function() { document.addEventListener("backbutton", this.backKey, true); DN.App.superclass.initComponent.call(this); }, setActivePanel: function(){ //global handler for switching panels }, backKey: function(){ var prev = DN.App.prevPanel[DN.App.prevPanel.length-1]; DN.App.prevPanel.pop(); //This handles the switching of panels, but 'this' is scoped to html document at this point this.fireEvent('setActivePanel',prev); } });
找到答案
呸,我在这里工作了几个小时才发布,然后在8分钟后弄明白。我尝试使用DN.App.fireEvent
,但也没有用。我意识到DN.App只是我制作的类,而不是实际的对象。在另一个文件中,我将其称为DNApp = new DN.App();
看到我尝试DNApp.fireEvent
之后,它的效果非常好。
答案 0 :(得分:1)
问题是“document.addEventListener(”backbutton“,this.backKey,true);”,当事件被触发时,期望“this”关键字被绑定到触发它的对象,你可以实现什么你想要一个像:
这样的闭包document.addEventListener("backbutton", (function(self){ return function(){ self.backKey(); }; })(this), true);