パネルにロードマスクを正しく設定する際に問題があります。ボタンをクリックすると、新しいツリーストアが生成され(ローカル)、かなりの時間がかかります。ロード・マスクは、関数全体が評価された後にのみ(ミリ秒)表示されます。私のコードでは、console.log(0)
とconsole.log(1)
は、すべての機能処理が完了した後に表示されます。ボタンは数秒間フリーズしてからフリーズし、そのコンソールの後に0 and 1
と表示されます。このような状況を処理する適切な方法は何ですか。ここでは、コードは次のようになります。Extjs長い処理中にマスクをロードする
ボタンの定義:
xtype:'button',
text:'Rozdziel działki',
iconCls:'icon-map_link',
scope:this,
handler:function(){
console.log(0);
this.splitParcels();
}
スプリット小包機能: - JSは*シングルスレッドである -
splitParcels:function(){ var mask = new Ext.LoadMask(Ext.getBody(), {msg:"Please wait..."}); mask.show(); console.log(1); this.mgstore.getRootNode().removeAll(); console.log(this.response); var root_node = this.mgstore.getRootNode(); Ext.each(this.response.plans, function(plan){ var plan_obj = { id:plan.plan.id, text:plan.plan.abbreviation, gsip_plan:plan, gsip_type:'plan', iconCls:'icon-map', expanded:true, leaf:false }; Ext.each(plan.parcels, function(parcel){ var parcel_obj = { id:parcel.parcel.id, text:parcel.parcel.name, leaf:true, gsip_plan:plan, gsip_parcels:parcel, gsip_type:'parcel', iconCls:'icon-vector' }; var planNode = root_node.appendChild(plan_obj); planNode.appendChild(parcel_obj); }); }); if (mask != undefined) mask.hide(); }
私は何をしたいのか指定しませんでした。単に私はsplitParcels関数をloadMaskでラップしたいと思います。マスクは最初に表示され、機能の最後に隠れます。 – patryks
文書の本文にレンダリングされたパネルはありますか? – Wilk
この関数は、ツリーパネルに関連付けられたストアを変更します。 – patryks