2016-11-05 3 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에서 이러한 항목을 만드는 데 250 밀리 초보다 훨씬 더 걸립니다입니다

<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를 호출하면 폼 렌더링 중에 지연이 눈에 띄게됩니다.