在Sencha Touch 2.3.1中显示/隐藏按钮失去参考

时间:2014-04-07 18:38:48

标签: javascript extjs sencha-touch

所以我的sencha touch应用程序出了问题。我有一个容器定义:

{
            xtype: 'container',
            text: 'SOMETHING',
            height: '15%',
            width: '15%',
            itemId: 'optionsMenu',
            hidden: true,
            style: 'background:red',
},

我在Listeners中定义了一个监听器:

{
            fn: 'onOptionsButtonTap',
            event: 'tap',
            delegate: '#optionsButton'
}

最后我的onOptionsButtonTap()方法:

onOptionsButtonTap: function() {
    var optionsPanel = this.down('#optionsMenu');
    console.log(optionsPanel.isHidden());
    if(optionsPanel.isHidden()) {
        optionsPanel.showBy(this.down('#optionsButton'));
        //optionsPanel.addAfterListener('tap', this.onOptionsButtonTap);
    }
    else
        optionsPanel.hide();
},

我想要做的是当我点击按钮时,按钮会显示容器。但是当我下次点击按钮时,我收到一个TypeError,说optionsPanel没有方法isHidden()。是什么造成的?我也尝试使用面板(因此变量名称),但这给出了相同的错误。

1 个答案:

答案 0 :(得分:0)

我添加了容器的名称。

            {
                xtype: 'container',
                text: 'SOMETHING',
                name: 'option_menu',
                height: '15%',
                width: '15%',
                hidden: true,
                style: 'background:red'
            }

在您的控制器中,只需创建此optionMenu: 'container[name="option_menu"] option_menu的引用,并在tap按钮事件中从控制器调用此函数。

onOptionsButtonTap: function(button) {
        var me = this, optionsPanel = me.getOptionMenu();
        console.log(optionsPanel.isHidden());
        if(optionsPanel.isHidden()) {
            optionsPanel.showBy(button);
        }
        else{
            optionsPanel.hide();
        }
    }