1

我正在尝试在 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 但这似乎很笨拙,或者这是要走的路?

4

2 回答 2

1

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

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

于 2012-09-03T12:33:54.013 回答
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');
于 2012-09-03T12:08:39.897 回答