0

我在这个网站上发现了类似的问题,但没有一个答案对我有用。这是我要隐藏的按钮(查看):

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

});

4

2 回答 2

1

http://docs.sencha.com/touch/2-1/#!/api/Ext.Button-method-setHidden

在您的操作中替换参考

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

我已将pnl_home: 'pnl_home', 添加到 refs 并在面板上调用 show 事件。修改后的代码可以在我最初的帖子中找到。

于 2013-02-13T14:27:07.530 回答