2

動的フィールドを持つフォームがあります。フォームの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
    }
}

編集:私はprerenderメソッド
を探していました

4

3 に答える 3

3

試す

f.labelEl.dom.innerHTML = "LABEL:<span style='color:red;font-weight:bold' data-qtip='Required'>*</span>";
于 2013-04-18T20:37:49.873 に答える
1

コンポーネントがすでにレンダリングされた後は、このプロパティを使用できません。initRenderTpl (ラベル テンプレートを使用する) メソッドは、コンポーネントがまだレンダリングされていない場合にのみ実行されます。レンダリングされると、再び実行されることはありません。

DOM を直接更新する必要があります。

于 2012-10-27T00:09:43.647 に答える
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);
},
于 2014-01-23T15:47:25.973 に答える