Extjs 在渲染前检索标签

Posted

技术标签:

【中文标题】Extjs 在渲染前检索标签【英文标题】:Extjs retrieve label beforerender 【发布时间】:2012-09-03 12:01:24 【问题描述】:

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


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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

【参考方案2】:

这样定义标签


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

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

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

【讨论】:

以上是关于Extjs 在渲染前检索标签的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Extjs 4 标签上添加点击事件

ExtJs - 具有动态可关闭标签的文本字段

Extjs折线图多线标签

在标签面板中添加按钮 [extjs 3.2]

Highcharts 和 EXTJS 3:x 轴重叠的标签

如何在extjs 4.1中的treePanel中移动节点标签的复选框结尾