このサイトで同様の質問を見つけましたが、どれもうまくいきませんでした。これは、非表示 (表示) にしたいボタンです。
{
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);
}
}
});