Dojo Dijit程序手风琴

Dojo Dijit程序手风琴,dojo,Dojo,尝试在动态布局中创建动态手风琴菜单。在顶级容器上运行startup()(IIRC是每个文档的),accordion不会初始化,即只显示第一个窗格。不在顶级容器上运行startup会初始化accordion(尽管它看起来不稳定),但不会初始化布局。删除所有动态代码以演示问题。谢谢你的建议 <!DOCTYPE html> <html > <head> <link rel="stylesheet" href="css/style4.css" medi

尝试在动态布局中创建动态手风琴菜单。在顶级容器上运行startup()(IIRC是每个文档的),accordion不会初始化,即只显示第一个窗格。不在顶级容器上运行startup会初始化accordion(尽管它看起来不稳定),但不会初始化布局。删除所有动态代码以演示问题。谢谢你的建议

<!DOCTYPE html>
<html >
<head>

    <link rel="stylesheet" href="css/style4.css" media="screen">
    <script>dojoConfig = {parseOnLoad: true}</script>
    <script src="dojo.1.9.3/dojo/dojo.js"> </script>

    <script>
require([
    "dijit/layout/BorderContainer",
    "dijit/layout/ContentPane",
    "dijit/layout/TabContainer",
    "dijit/layout/AccordionContainer", 
    "dijit/layout/AccordionPane",
    "dojo/domReady!"
], function(BorderContainer, ContentPane, TabContainer, AccordionContainer, AccordionPane){

    var bc = new BorderContainer({style: "height: 600px; width: 800px;"});

    var cp1 = new ContentPane({
        region: "left",
        style: "height: 400px",
        content: "hello world"
    });
    bc.addChild(cp1);
    var cp2 = new ContentPane({
        region: "center",
        style: "height: 400px",
    });
    var aContainer = new AccordionContainer();
    aContainer.addChild(new AccordionPane({
        title: "number one",
        content: "Hello world"
    }));
    aContainer.addChild(new AccordionPane({
        title: "number two",
        content: "Hello Goodbye"
    }));
    cp2.addChild(aContainer);
    bc.addChild(cp2);
    document.body.appendChild(bc.domNode);
    bc.startup();
    //cp2.startup();
});
    </script>
</head>
<body class="claro">

</body>
</html>

dojoConfig={parseOnLoad:true}
要求([
“dijit/layout/BorderContainer”,
“dijit/layout/ContentPane”,
“dijit/layout/TabContainer”,
“dijit/layout/AccordionContainer”,
“dijit/layout/AccordionPane”,
“dojo/domReady!”
],函数(BorderContainer、ContentPane、TabContainer、AccordionContainer、AccordionPane){
var bc=newbordercontainer({style:“高度:600px;宽度:800px;”});
var cp1=新内容窗格({
区域:“左”,
样式:“高度:400px”,
内容:“你好,世界”
});
bc.addChild(cp1);
var cp2=新内容窗格({
地区:“中心”,
样式:“高度:400px”,
});
var aContainer=新的AccordionContainer();
aContainer.addChild(新手风琴窗格({
标题:“第一”,
内容:“你好,世界”
}));
aContainer.addChild(新手风琴窗格({
标题:“第二号”,
内容:“你好,再见”
}));
cp2.addChild(容器);
bc.addChild(cp2);
document.body.appendChild(bc.domNode);
bc.startup();
//cp2.startup();
});

对我来说这看起来像一个简单的打字错误,没有所谓的dijit/layout/AccordionPane模块。要使用
AccordionContainer
,只需同时使用
ContentPane
,您可以在《参考指南》上的中看到。例如:

var aContainer=新的AccordionContainer();
aContainer.addChild(新内容窗格({
标题:“第一”,
内容:“你好,世界”
}));
aContainer.addChild(新内容窗格({
标题:“第二号”,
内容:“你好,再见”
}));

简单地用
ContentPane
替换
AccordionPane
,似乎效果很好,正如您在这个JSFiddle中看到的:

什么有效-用region:“center”初始化accordioncainer并直接添加到中间容器的顶部元素。