2009-07-27 5 views
3

Я пытаюсь открыть & Закрыть аккордеонные панели программно. Вот упрощенная версия моего кода. Даже если я установил, что для первой панели выбрано значение false, а вторая выбрана равной true, открывается только первая панель, когда она загружается в браузере (FF3).Каков наилучший способ программно открыть панель внутри Dijit AccordionContainer

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.AccordionContainer является подклассом dijit.layout.StackContainer, который имеет selectChild.

Я создал demo page where you can see this code in action

Если вы звонили selectChild до того startup, что может привести к ошибке вы видели, так как виджет не был в «полном» состоянии. (Извините, пропустил код с выделенным кодом, прежде чем я отправил оригинальный ответ)

+0

Спасибо, что ответили. я использую dojo 1.3.2. Я попытался сделать accordionContainer.selectChild (accordPane2); , но он ошибся. newWidget._buttonWidget не определен В соответствии с API не выглядит так, как selectChild - это функция для AccordionContainer. – pacman

+0

Я обновил свой ответ в ответ. – seth

+1

Спасибо Сет. – pacman