我的頁面上有一個dijit.layout.AccordionContainer,它在html中定義,並在dojo在加載時解析頁面時創建。以編程方式控制Dojo手風琴
然後,當用戶與頁面交互時,我使用Ajax檢索數據並以編程方式填充容器(先移除現有項目)。
爲了說明我的問題簡單地說,這裏是一些代碼,不工作:
function doit() {
var accordion = dijit.byId("accordionShell");
accordion.getChildren().each(function(item) {
accordion.removeChild(item);
});
for (i = 1; i < 5; i++) {
var d = new dijit.layout.AccordionPane({title:'hello', content:'world'});
accordion.addChild(d);
}
}
這失敗,因爲只有在手風琴的第一個項目是可見的。我認爲其他人確實存在,但他們不可見,所以你什麼都做不了。
我設法繞過它:
- 務必確保更改後沒有在手風琴(所以我從來不刪除第一個孩子)
- 呼叫accordian.layout(1項)內容
所以,這個代碼「作品」只要你一直想看到的第一個項目,實際上沒有任何擴大,但第一個:
function doit() {
var accordion = dijit.byId("accordionShell");
var i = 0;
accordion.getChildren().each(function(item) {
if (i > 0) accordion.removeChild(item);
i++;
});
for (i = 1; i < 5; i++) {
var d = new dijit.layout.AccordionPane({title:'hello', content:'world'});
accordion.addChild(d);
}
accordion.layout();
}
我正在使用Dojo 1.2.0 - 任何人都知道我在做什麼錯了?
謝謝,但這並沒有改變任何東西。仍然需要在手風琴中留下一件物品。 – prule 2009-02-26 00:12:55