Extjs在渲染前检索标签

Extjs在渲染前检索标签,extjs,Extjs,我正在尝试加载beforerender事件上标签的文本。所以我附加了之前的事件。。。如下 { xtype: 'label', text: 'VOID', listeners: { beforerender: { fn: me.onLabelBeforeRender, scope: me } }, Ext.Ajax.request({ url: '/who', method: 'GET', p

我正在尝试加载beforerender事件上标签的文本。所以我附加了之前的事件。。。如下

{
    xtype: 'label',
    text: 'VOID',
    listeners: {
        beforerender: {
        fn: me.onLabelBeforeRender,
        scope: me
    }
},

Ext.Ajax.request({
    url: '/who',
    method: 'GET',
    params: {
        id: 1
    },
    success: function(response){
        var text = Ext.decode(response.responseText);
        alert(text);
        // process server response here
    }
});

现在我想将标签从VOID改为/who的响应值,但是我看不出如何以一种体面的方式访问该标签。当然,我可以使用getcmp添加一个id,但是这看起来很笨拙,或者这是一种方法吗?

像这样定义标签

{
    xtype: 'label',
    text: 'VOID',
    itemId:'someLabel',
    listeners: {
        beforerender: {
        fn: me.onLabelBeforeRender,
        scope: me
    }
}
现在,由于您将作用域保留为
me
,我假设它是label的某个祖先,因此在
onlabelbeforender
函数中,您可以通过
this
关键字访问
me
。因此,在该函数中,检索标签为

var label = this.down('label[itemId="someLabel"]');
label.setText('WHATEVER YOU WANT HERE');

像这样定义标签

{
    xtype: 'label',
    text: 'VOID',
    itemId:'someLabel',
    listeners: {
        beforerender: {
        fn: me.onLabelBeforeRender,
        scope: me
    }
}
现在,由于您将作用域保留为
me
,我假设它是label的某个祖先,因此在
onlabelbeforender
函数中,您可以通过
this
关键字访问
me
。因此,在该函数中,检索标签为

var label = this.down('label[itemId="someLabel"]');
label.setText('WHATEVER YOU WANT HERE');

实际上,就性能而言,id+
Ext.getCmp()
是最有效的选择。更多信息,请参阅


它肯定比添加一个侦听器要快,因为您可以得到一个健康的调用堆栈。

实际上,就性能而言,id+
Ext.getCmp()
是最有效的选择。更多信息,请参阅

它肯定比添加一个监听器要快,因为您可以得到一个健康的调用堆栈