0

このサイトで同様の質問を見つけましたが、どれもうまくいきませんでした。これは、非表示 (表示) にしたいボタンです。

{
        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);
    }
}

});

4

2 に答える 2

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
    }
}
于 2013-01-30T11:24:43.187 に答える
0

を refs に追加pnl_home: 'pnl_home'し、パネルで show イベントを呼び出しました。変更されたコードは、上記の私の最初の投稿にあります。

于 2013-02-13T14:27:07.530 に答える