我在这个网站上发现了类似的问题,但没有一个答案对我有用。这是我要隐藏的按钮(查看):
{
xtype: 'button',
id: 'btn_messenger',
text: 'Messenger'
}
该视图的控制器具有初始化功能:
init : function() {
var me = this;
me.callParent();
me.hideMessengerButton(me);
}
这是应该隐藏按钮的功能:
hideMessengerButton: function(me) {
var user = me.getLoggedUser(); // return user or undefined
if (user == undefined) {
Ext.select('#btn_messenger').hide(); // Does nothing
}
}
我试过这些选项:
Ext.getCmp('btn_messenger').hide(); // Ext.getCmp('btn_messenger') returns undefined
Ext.getCmp('#btn_messenger').hide(); // Ext.getCmp('#btn_messenger') returns undefined
在控制器的 refs 中有btn_messenger: '#btn_messenger'
,所以我尝试过:
this.getBtn_messenger().hide() // this.getBtn_messenger() returns undefined
提前感谢您的帮助。
PS.:我不知道这是否重要,但上面提到的观点不是主要观点。在主视图上点击按钮后按下它。
编辑:
这是控制器:
Ext.define('First.controller.HomePage', {
extend : 'First.controller.Controller',
requires : ['First.view.Main', 'First.view.HomePage'],
config : {
refs : {
pnl_home: 'pnl_home',
btn_messenger : '#btn_messenger'
},
control : {
btn_messenger : {
tap : 'btn_openMessenger'
}
pnl_home: {
show: 'hideMessengerButton'
}
},
},
init : function() {
var me = this;
me.callParent();
},
btn_openMessenger : function() {
Ext.Msg.alert('Open', 'Messenger');
},
/**
* Hide meseenger button when user's not logged in
*/
hideMessengerButton : function() {
var me = this;
var user = me.getLoggedUser();
if (user == undefined) {
me.getBtn_messenger().setHidden(true);
}
}
});