在表单渲染后设置AfterLabelTextTpl

时间:2012-10-25 12:49:41

标签: extjs4 extjs

我有一个包含动态字段的表单。在表单的afterrender事件中,我想设置afterLabelTextTpl属性。我可以设置此属性,但我看不到它在我的表单中更改。我怎样才能做到这一点?

段:

listeners: {
    beforerender: function () {
        var fields = me.getForm().getFields();
        Ext.each(fields.items, function (f, idx) {
            f.afterLabelTextTpl = requiredTpl;

            console.log(f.afterLabelTextTpl);
        }); //eo Ext.each
    }
}

修改
我正在寻找 beforerender 方法

3 个答案:

答案 0 :(得分:3)

尝试

f.labelEl.dom.innerHTML = "LABEL:<span style='color:red;font-weight:bold' data-qtip='Required'>*</span>";

答案 1 :(得分:1)

在呈现组件后,您无法使用此属性。 仅当组件尚未呈现时,才运行initRenderTpl(使用标签模板)方法。一旦渲染它就不会再次运行。

您需要直接更新DOM。

答案 2 :(得分:0)

我会在你的表单中推荐这样的东西:

setRequired: function(field, index) {
    field.afterLabelTextTpl = requiredTpl;
},

initComponent: function(arguments) {
    var me = this;

    this.on('beforeadd', function(me, field){
        var fields;

        if (field.isXType('fieldset')) {
            fields = field.query('field');
            Ext.each(fields, me.setRequired);
        } else {
            me.setRequired(field);
        }
    });


    // rest of logic
    me.callParent(arguments);
},