我在这个网站上发现了类似的问题,但没有一个答案对我有用。这是我要隐藏的按钮(查看):
{
xtype: 'button',
id: 'btn_messenger',
text: 'Messenger'
}
该视图的控制器具有init函数:
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
在控制器的引用中有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);
}
}
});
答案 0 :(得分:1)
http://docs.sencha.com/touch/2-1/#!/api/Ext.Button-method-setHidden
在你的行动中 替换refs
refs : {
btnMessenger: '#btn_messenger'
},
然后当您需要此按钮时,请使用下一步
this.getBtnMessenger().setHidden(true)
也在初始化按钮上还没有添加到dom中,因为我记得
lauch : function() {
this.hideMessengerButton();
},
hideMessengerButton: function() {
var user = this.getLoggedUser(); // return user or undefined
if (user == undefined) {
this.getBtnMessenger().setHidden(true); // Does nothing
}
}
答案 1 :(得分:0)
我已添加pnl_home: 'pnl_home'
,以在面板上引用并调用show事件。修改后的代码可以在我的上篇文章中找到。