PhoneGap和Sencha touch的范围问题

时间:2011-06-14 14:50:34

标签: javascript extjs scope cordova 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(){
        //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之后,它的效果非常好。

1 个答案:

答案 0 :(得分:1)

问题是“document.addEventListener(”backbutton“,this.backKey,true);”,当事件被触发时,期望“this”关键字被绑定到触发它的对象,你可以实现什么你想要一个像:

这样的闭包
document.addEventListener("backbutton", (function(self){ return function(){ self.backKey(); }; })(this), true);