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 に答える