2009-07-27 30 views
3

我試圖以編程方式打開&關閉手風琴窗格。這是我的代碼的簡化版本。即使我將第一個窗格設置爲false,並將第二個窗格設置爲true,但只有第一個窗格在瀏覽器(FF3)上加載時纔打開。什麼是以編程方式打開Dijit手風琴內幕的最佳方式手風琴容器

var accordionContainer = new dijit.layout.AccordionContainer().placeAt("test"); 
var accordPane = new dijit.layout.ContentPane({"title": "test", "content":"hello"}); 
var accordPane2 = new dijit.layout.ContentPane({"title": "test1", "content":"hello1"}); 
accordionContainer.addChild(accordPane); 
accordionContainer.addChild(accordPane2, 1); 
accordPane.startup(); 
accordPane2.startup(); 
//accordionContainer.selectChild(accordPane2); 
accordionContainer.startup(); 
accordPane.selected = false; 
accordPane2.selected = true; 

回答

10

你可以這樣說:

accordionContainer.selectChild(accordPane2); 

假設你正在使用道場1.3。

dijit.layout.AccordionContainerdijit.layout.StackContainer的子類,其具有selectChild定義。

我成立了一個demo page where you can see this code in action

如果你startup之前調用selectChild,這可能導致由於部件在「完成」狀態是不是您所看到的錯誤。 (對不起,在我發佈原始答案之前錯過了退出的代碼)

+0

感謝您的回覆。 我正在使用dojo 1.3.2。我試過 accordionContainer.selectChild(accordPane2); 但它錯了。 newWidget._buttonWidget未定義 根據API看起來不像selectChild是AccordionContainer的一個函數。 – pacman 2009-07-27 20:40:57