2016-11-05 6 views
1

とコンボボックスの6防止遅延レンダリングは、私はそうのようにインスタンス化され、単純なコンボボックスがあります。ExtJSのローカルストア

{ 
    xtype: "combobox", 
    emptyText: "Geometry", 
    queryMode: "local", 
    displayField: "name", 
    valueField: "id", 
    forceSelection: true, 
    allowBlank: false, 
    itemId: "GeometryType", 
    value: "1", 
    store: Ext.create("Ext.data.Store",{ 
     fields: ["id", "name"], 
     data: [ 
      {"id": "1", "name": "Point"},         
      {"id": "2", "name": "LineString"}, 
      {"id": "3", "name": "Circle"}, 
      {"id": "4", "name": "Box"}, 
      {"id": "5", "name": "Polygon"} 
     ] 
    }) 
} 

は、私は、拡張(またはドロップダウンの矢印を打つ)初めてこのコンボボックスをI問題は、それがDOMでこれらのアイテムを作成するために、250msのよりもはるかに多くを要することである

<div class="x-boundlist x-boundlist-floating x-layer x-boundlist-default x-border-box" style="width: 388px; right: auto; left: 6px; top: 183.5px; height: auto; z-index: 19000;" id="boundlist-1245" tabindex="-1" data-componentid="boundlist-1245"> 
<div id="boundlist-1245-listWrap" data-ref="listWrap" class="x-boundlist-list-ct x-unselectable" style="overflow: auto; height: auto;"> 
<ul id="boundlist-1245-listEl" data-ref="listEl" class="x-list-plain" role="listbox" aria-hidden="false" aria-disabled="false"> 
<li role="option" unselectable="on" class="x-boundlist-item x-boundlist-selected" tabindex="-1" data-recordindex="0" data-recordid="10" data-boundview="boundlist-1245" id="ext-element-26">Point</li> 
...</ul> 
</div> 
</div> 

:ページのDOM構造でのような新しい項目の数を表示されていることを、インスペクタに表示されます。だから、私は、ユーザーとして、いくつかの重要な遅れを感じ、それは良く見えません。約半分の時間のための簡単なコンボローディング!私は、このプロセスをいくつかの財産で遅らせることができます(遅延:間違ったことやそれに似たもの)。しかし、そのような財産が存在するかどうかはわかりません。

+0

質問が追加されません。私がこれを実行してコンボをクリックすると、すぐにリストが表示されます:https://fiddle.sencha.com/#fiddle/1jub –

+0

私の場合は、最初にやるとかなりの遅延が見られますが、私はそれがすぐに現れる二回目のためにそれをする。とにかく、即時レンダリングを強制することができれば(遅延の代わりに、今のように)、それは素晴らしいでしょう。 – Jacobian

+0

次に、提供したサンプルコードで明らかに問題が発生しないため、問題がどのようなものであるかを示すテストケースを投稿してください。 –

答えて

2

comboboxは、特別な種類のpickerfieldです。 A pickerfieldには、既存のピッカーを取得しようとする機能getPicker()があり、存在しない場合は、ピッカーのコンポーネントが作成されます。誰かがトリガーをクリックしたときに

ExtJSにはgetPicker()の最初の呼び出しを行いますが、それはあなたが本当にしたい場合は、あなたが以前にそれを呼び出すことができなかったという意味ではありませんので、予めご了承ください

var combo = Ext.widget({ 
    ... 
}); 
combo.getPicker(); 

あなたの場合コンボボックスがいっぱいのフォームを持っていて、作成中にそれらのすべてでgetPickerを呼び出すと、フォームのレンダリング中に遅延が顕著になります。

関連する問題