2011-11-24 54 views
0

我希望通過編程的4個孩子添加到dijit.layout.AccordionContainer工作。腳本沒有錯誤地運行,但它只增加了2個孩子,不管我如何實現這個目標。從我的調試使用螢火蟲看起來像加入第二個孩子後,腳本停止。我想提出以下建議從hereherehere,但我沒有發現任何解決方案。道場AccordionContainer.addChild不超過2名兒童

一些代碼: AccordionContainer定義:

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

listaWyjazdow.startup(); 

aktualizujListeWyjazdow(); 

功能,4個孩子添加到AccordionContainer

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:

{ 
    "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]具有以下結構(從螢火蟲拍攝):

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

我有注意到上面顯示的_S包含整個dane數組。這dane包含另一個_S與全dane陣列。等等,遞歸 - 這可能是問題嗎?

+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>