1

我需要“好风格”的建议。我有一个从 json 填充的表单。填充表单的代码放在渲染侦听器中。问题是,许多表单元素都有更改侦听器,因此在填充表单时会触发这些更改侦听器。我想防止这种不需要的行为。

// many form elements with change listeners come here

listeners:{
 render:function(){
    var frm=this.getForm();
    Ext.Ajax.request({
        url:'../handlers/instruct.handler.php?id='+id, 
        method:'POST',
        params:{action:'params'},
        success:function(result,request){
            json=Ext.decode(result.responseText,1);
            frm.setValues(json); // form population
                            // triggers change listeners 
        }
    });
 }
}

PS。我使用 ExtJs 4.2

4

1 回答 1

2

您可以暂停字段上的事件:

var fields = form.getForm().getFields();
fields.each(function(f) {
    f.suspendEvents();
});
form.setValues(json);
fields.each(function(f) {
    f.resumeEvents();
});
于 2013-08-05T05:40:51.307 回答