什么是在Dijit AccordionContainer中以编程方式打开窗格的最佳方式

pac*_*man 2 dojo accordionpane accordion

我正在以编程方式尝试打开和关闭手风琴窗格.这是我的代码的简化版本.即使我将第一个窗格的选择设置为false而第二个窗格的选择设置为true,但只有第一个窗格在浏览器(FF3)上加载时才会打开.

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;
Run Code Online (Sandbox Code Playgroud)

set*_*eth 10

你可以这样做:

accordionContainer.selectChild( accordPane2 );
Run Code Online (Sandbox Code Playgroud)

假设您正在使用dojo 1.3.

dijit.layout.AccordionContainerdijit.layout.StackContainerselectChild定义的子类.

我设置了一个演示页面,您可以在其中查看此代码的运行情况

如果您selectChild之前正在调用startup,那么可能会导致您看到的错误,因为窗口小部件未处于"完整"状态.(对不起,在我发布原始答案之前错过了已发布的代码)