我试图在按下注销按钮时设置确认消息,如果用户单击“是”,则会在名为“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;
}
});
}
Controller中的myContainer参考
myContainer: '#myContainer'
错误讯息:
Uncaught TypeError: Object [object Window] has no method 'getMyContainer'
答案 0 :(得分:5)
我经常使用的一个小技巧是
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
访问函数对象。
希望这有帮助
答案 1 :(得分:1)
下面:
function(button){
if (button == 'yes') {
//doesn't work:
this.getMyContainer().setActiveItem(1);
} else {
return false;
}
this
指的是你的函数对象,而不是控制器。
如果要调用控制器的该方法,请尝试:
Ext.getApplication().getController("your_controller_name").getMyContainer();
希望它有所帮助。
答案 2 :(得分:0)
另一种方式是
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'参数。