ExtJS的。在加载时设置表单值并更改侦听器

时间:2013-08-05 05:32:32

标签: extjs

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

// 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

1 个答案:

答案 0 :(得分:2)

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

var fields = form.getForm().getFields();
fields.each(function(f) {
    f.suspendEvents();
});
form.setValues(json);
fields.each(function(f) {
    f.resumeEvents();
});