Extjs在检索之前检索标签

时间:2012-09-03 12:01:25

标签: extjs

我正在尝试在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的响应值但是我没有看到如何以合适的方式访问该标签。当然我可以添加一个id使用getcmp但是这看起来很笨拙,还是要走的路?

2 个答案:

答案 0 :(得分:1)

实际上,就性能而言,id + Ext.getCmp()是最有效的选择。有关详情,请参阅this question

它肯定会比添加一个监听器更快,为此你得到一个非常健康的调用堆栈。

答案 1 :(得分:0)

像这样定义标签

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

现在因为您将范围保持为me,我假设它是标签的祖先,所以在onLabelBeforeRender函数中,您可以通过me关键字访问this 。所以在该函数中将标签检索为

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