我的页面上有一个 dijit.layout.AccordionContainer,它在 html 中定义,并在 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);
}
}
这失败了,因为只有手风琴中的第一个项目是可见的。我认为其他人确实存在,但它们不可见,因此您无能为力。
我设法通过以下方式绕过它:
- 始终确保手风琴中有 1 个项目(所以我从不移除第一个孩子)
- 更改内容后调用accordian.layout()
因此,只要您总是想查看第一项,并且除了第一项之外实际上不展开任何内容,这段代码就“有效”:
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 - 有人知道我做错了什么吗?