2011-11-24 10 views
0

에 4 명의 자녀를 프로그래밍 방식으로 추가하고 싶습니다. 이 스크립트는 오류없이 실행되지만이 작업을 수행하는 방법에 관계없이 2 명의 자식 만 추가합니다. 방화 광을 사용하여 내 디버그에서 두 번째 자식을 추가 한 후 스크립트가 멈춘 것처럼 보입니다. here, herehere에서 다음 제안을 시도했지만 해결 방법을 찾지 못했습니다.Dojo AccordionContainer.addChild가 2 명 이상의 어린이에게 작동하지 않습니다.

일부 코드 : AccordionContainer 정의 :

var listaWyjazdow = new dijit.layout.AccordionContainer({}, "target-lista-wyjazdow"); 

listaWyjazdow.startup(); 

aktualizujListeWyjazdow(); 

기능은 AccordionContainer에 4 자녀를 추가 할 수 있습니다 : (개똥 벌레)에서

function aktualizujListeWyjazdow(){ 
dojo.require("dijit.layout.AccordionPane"); 

var lista = dijit.byId('target-lista-wyjazdow'); 
lista.destroyDescendants(); 

var tablica = new dojo.data.ItemFileReadStore({ 
    url: "logika/getJSON/getWyjazdy.php", 
    clearOnClose: true, 
    urlPreventCache: true 
}).fetch({ 
    query: {id: '*'}, 
    sort: {attribute: 'data', descending: true}, 
    start: 0, 
    count: 4, 
    onComplete: function(dane){ 
     console.log(dane); 
     var ile = dane.length; 
     var i = 0; 
     var dzieci = new Array(); 

        //this works for 2 children only: 
     for (i = 0; i < ile; i++){ 
      var szczegoly = 'Klient: <strong>' + dane[i].klient + '</strong></br>'; 
      szczegoly += 'Osoba wyjeżdżająca: <strong>' + dane[i].wyjezdzajacy + '</strong></br>'; 

      dzieci[i] = new dijit.layout.AccordionPane({ 
       id: "wyjazd" + i, 
       title: "Wyjazd: " + dane[i].data, 
       content: szczegoly 
      }); 
      console.log(dane[i]); 
      console.log(i + ' - ' + ile); 
      lista.addChild(dzieci[i], 0); 
      lista.selectChild(dijit.byId('wyjazd' + i)); 
      //console.log(lista); 
     } 
        //this works for 2 children only: 
     /*lista.addChild(dzieci[0]); 
     console.log(0); 
     lista.addChild(dzieci[1]); 
     console.log(1); 
     lista.addChild(dzieci[2]); 
     console.log(2); 
     lista.addChild(dzieci[3]); 
     console.log(3);*/ 

        //this outputs all children: 
     /*console.log(dzieci[0]); 
     console.log(dzieci[1]); 
     console.log(dzieci[2]); 
     console.log(dzieci[3]);*/ 

        //this works for 2 children only: 
     /*for (i = 0; i < ile; i++){ 
      lista.addChild(dzieci[i]); 
      console.log(dzieci[i]); 
     }*/ 
    } 
}); 
} 

콘솔 출력 :

[Object { id=[1], etykieta=[1], data=[1], more...}, Object { id=[1], etykieta=[1], data=[1], more...}, Object { id=[1], etykieta=[1], data=[1], more...}, Object { id=[1], etykieta=[1], data=[1], more...}] 

Object { id=[1], etykieta=[1], data=[1], more...} 

0 - 4 

Object { id=[1], etykieta=[1], data=[1], more...} 

1 - 4 

어떤 도움이 것 크게 감사드립니다!

편집 약간 업데이트 : url에 의해 반환 내 ItemFileReadStore 개체 값 은 JSON입니다 : 내가 가진

_0 2 
_RI true 
_S Object { _arrayOfAllItems=[4], _arrayOfTopLevelItems=[4], _loadFinished=true, more...} 
data ["30-11-2011"] 
[other fields from json structure] 

:

{ 
    "identifier": "id", 
    "label": "etykieta", 
    "items": [ 
     { 
      "id": "1", 
      "etykieta": "Wyjazd0", 
      "data": "06-10-2011", 
      "wyjezdzajacy": "cblajszczak", 
      "idKlienta": "1", 
      "klient": "klient testowy", 
      "zadanieQS": null, 
      "dataKolejnegoWyjazdu": null, 
      "lacznyCzasWyjazdu": "0" 
     }, 
     { 
      "id": "3", 
      "etykieta": "Wyjazd1", 
      "data": "15-11-2011", 
      "wyjezdzajacy": "cblajszczak", 
      "idKlienta": "1", 
      "klient": "klient testowy", 
      "zadanieQS": null, 
      "dataKolejnegoWyjazdu": null, 
      "lacznyCzasWyjazdu": "0" 
     }, 
     { 
      "id": "5", 
      "etykieta": "Wyjazd2", 
      "data": "30-11-2011", 
      "wyjezdzajacy": "cblajszczak", 
      "idKlienta": "1", 
      "klient": "klient testowy", 
      "zadanieQS": null, 
      "dataKolejnegoWyjazdu": null, 
      "lacznyCzasWyjazdu": "0" 
     }, 
     { 
      "id": "4", 
      "etykieta": "Wyjazd3", 
      "data": "24-11-2011", 
      "wyjezdzajacy": "cblajszczak", 
      "idKlienta": "2", 
      "klient": "hfhhfhd", 
      "zadanieQS": null, 
      "dataKolejnegoWyjazdu": null, 
      "lacznyCzasWyjazdu": "0" 
     } 
    ] 
} 

dane[2]는 (불을 지르고에서 가져온) 다음과 같은 구조를 가지고 있습니다 위의 _S에는 전체 배열이 dane 배열되어 있습니다. 그리고이 dane에는 또 다른 _Sdane 배열이 포함되어 있습니다. 반복적으로 - 이것이 문제가 될 수 있습니까?

+0

아주 이상한 ... 세 번째 데인 개체의 속성은 무엇입니까? – Frode

+0

내 질문을 편집하여 더 많은 데이터를 추가했습니다. – maialithar

+0

어떤 dojo 버전을 사용하고 있습니까? 나는 jsfiddle에서 그것을 재현 할 수 없다 : http://jsfiddle.net/Quag2/ – Frode

답변

0

마침내 문제를 해결할 수있었습니다. 다른 사람이 비슷한 문제가 발생하는 경우 해결책은 프로그래밍 방식이 아닌 선언적으로 컨테이너 (이 경우 AccordionContainer)를 만드는 것입니다. <div id="id" style="height:50%" dojoType="dijit.layout.AccordionContainer"></div>