Button 设置按钮后的文本';s已添加到sencha touch 2的导航栏中

Button 设置按钮后的文本';s已添加到sencha touch 2的导航栏中,button,view,sencha-touch-2,navigationbar,Button,View,Sencha Touch 2,Navigationbar,在视图的initialize方法中将按钮添加到navigationbar后,我试图更改按钮上的文本。但是,当使用Chrome进行调试时,它会停止并在Connection.js上发出以下消息:uncaughttypeerror:无法读取未定义的属性'readyState'。我认为这应该是简单的,我有点困惑!这是我的密码: Ext.define('EventsTest.view.NavTest', { extend: 'Ext.navigation.View', config: {

在视图的initialize方法中将按钮添加到navigationbar后,我试图更改按钮上的文本。但是,当使用Chrome进行调试时,它会停止并在Connection.js上发出以下消息:uncaughttypeerror:无法读取未定义的属性'readyState'。我认为这应该是简单的,我有点困惑!这是我的密码:

Ext.define('EventsTest.view.NavTest', {
    extend: 'Ext.navigation.View',

    config: {
        navigationBar: {
            items: [
                {
                    xtype: 'button',
                    text: 'Help',
                    id: 'favoritesHelp',
                    translate: true,
                    translationKey: 'navigationbar.helpbutton',
                    align: 'right'
                }
            ]
        },
        items: [
            {
                xtype: 'container',
                items: [
                    {
                        xtype: 'panel',
                        html: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin vehicula tincidunt purus, a dignissim dui rutrum ut. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nullam pellentesque quam non orci porta sodales. Nulla laoreet varius libero, ac eleifend velit eleifend et. Proin a odio orci, sed bibendum libero. Maecenas eget nisl nec sapien sollicitudin mollis. Phasellus vel est eget risus ornare facilisis ac sed dui. Aliquam non feugiat sapien. In suscipit libero nec lorem lobortis molestie.'
                    },
                    {
                        xtype: 'button',
                        id: 'nextPage',
                        text: 'Next Page'
                    }
                ]

            }

        ]
    },

    initialize: function() {
        this.callParent();
        this.setDefaultBackButtonText('reverse');
        var helpBtn = this.getNavigationBar().query('#favoritesHelp');
        helpBtn.text = 'Yello';
    }
});

这是因为你的疑问是错误的。尝试替换此2行:

var helpBtn = this.getNavigationBar().query('#favoritesHelp');
helpBtn.text = 'Yello';
为此:

var helpBtn = Ext.getCmp('favoritesHelp');
helpBtn.setText("Yellow");
希望有帮助:)


编辑:

保持这样的查询是可以的,但是您需要记住,您的查询将检索一个元素数组,而不是单个元素

除此之外,您不能使用
.text
更改按钮内的文本,因为它不会更改按钮的
innerHTML
。尝试使用以下方法:

var helpBtn = this.getNavigationBar().query('#favoritesHelp');
helpBtn[0].textElement.dom.innerHTML = "Yellow";

我想这就是你想要的

config: {
        listeners: {
                   initialize: function(){
                   this.down('button').setText('Whatever You Want')
        }
}}

这不起作用,我尝试将此侦听器对象添加到配置对象和navigationbar对象,但没有成功。这两种情况都会返回readyState错误。查询绝对正确。
Ext.getCmp()
函数只是
Ext.ComponentQuery.query()
的另一个方便函数。我还重新检查了调试器。在
var helpBtn=this.getNavigationBar().query('#favoritesHelp')之后语句它确实获取了正确的组件。谢谢。在逐步使用调试器之后,我意识到
.query()
函数总是返回一个数组,即使只选择了一个组件。我可以这样访问它:
this.getNavigationBar().query('#favoritesHelp')[0].setHtml()