Sencha touch 2 Ext.Msg.confirm-对象[对象窗口]没有方法'';

Sencha touch 2 Ext.Msg.confirm-对象[对象窗口]没有方法'';,sencha-touch-2,sencha-architect,Sencha Touch 2,Sencha Architect,我试图在按下注销按钮时设置一条确认消息,如果用户单击“是”,则会重定向到名为“myContainer”的容器中的面板控制。消息看起来很好,但当我选择“是”时,我会收到一个错误(假设因为容器未初始化)。我在控制器上设置了一个容器的引用,但这似乎没有帮助。任何关于如何正确处理此类确认的建议都将不胜感激。谢谢 确认信息: onLogoutTap: function(button, e, options) { Ext.Msg.confirm("Logout", "Do you wish to conti

我试图在按下注销按钮时设置一条确认消息,如果用户单击“是”,则会重定向到名为“myContainer”的容器中的面板控制。消息看起来很好,但当我选择“是”时,我会收到一个错误(假设因为容器未初始化)。我在控制器上设置了一个容器的引用,但这似乎没有帮助。任何关于如何正确处理此类确认的建议都将不胜感激。谢谢

确认信息:

onLogoutTap: function(button, e, options) {
Ext.Msg.confirm("Logout", "Do you wish to continue?", function(button){
    if (button == 'yes') {
    //doesn't work:
        this.getMyContainer().setActiveItem(1);
    } else {
        return false;
    }
});
}
控制器中的myContainer引用

myContainer: '#myContainer'
错误消息:

Uncaught TypeError: Object [object Window] has no method 'getMyContainer'
在这里:

指的是您的函数对象,而不是控制器

如果要调用控制器的该方法,请尝试:

Ext.getApplication().getController(“您的控制器名称”).getMyContainer()

希望有帮助。

这里:

指的是您的函数对象,而不是控制器

如果要调用控制器的该方法,请尝试:

Ext.getApplication().getController(“您的控制器名称”).getMyContainer()


希望有帮助。

我经常使用的一个小技巧是

onLogoutTap: function(button, e, options) {
  var controller = this;
  Ext.Msg.confirm("Logout", "Do you wish to continue?", function (button) {
    if (button == 'yes') {
    //doesn't work:
        controller.getMyContainer().setActiveItem(1);
    } else {
        return false;
    }
  });
}
这样,您仍然可以使用关键字
this
访问函数对象


希望这有帮助

我经常使用的一个小技巧是

onLogoutTap: function(button, e, options) {
  var controller = this;
  Ext.Msg.confirm("Logout", "Do you wish to continue?", function (button) {
    if (button == 'yes') {
    //doesn't work:
        controller.getMyContainer().setActiveItem(1);
    } else {
        return false;
    }
  });
}
这样,您仍然可以使用关键字
this
访问函数对象

希望这有帮助

另一种方法是

onLogoutTap: function(button, e, options) {
    Ext.Msg.confirm("Logout", "Do you wish to continue?", function(button){
        if (button == 'yes') {
        //DOES WORK!!
            this.getMyContainer().setActiveItem(1);
        } else {
            return false;
        }
    }, this);
}
只需在函数定义后添加'scope'参数。

另一种方法是

onLogoutTap: function(button, e, options) {
    Ext.Msg.confirm("Logout", "Do you wish to continue?", function(button){
        if (button == 'yes') {
        //DOES WORK!!
            this.getMyContainer().setActiveItem(1);
        } else {
            return false;
        }
    }, this);
}

只需在函数定义后添加“scope”参数。

感谢您提供此选项。感谢您提供此选项