删除并创建带有内容窗格的dojo accordian容器

删除并创建带有内容窗格的dojo accordian容器,dojo,dijit.layout,dojo-1.8,Dojo,Dijit.layout,Dojo 1.8,我是Dojo新手,我使用的是Dojo 1.8,这里是我要做的——我创建了一个带有一些内容窗格的手风琴容器。这是可行的,当我点击页面上的某个按钮时,我正在调用一个函数(del),在这里我想删除现有的accorbian容器及其内容窗格。然后用一些不同的内容窗格重新创建手风琴容器。 调用del函数后,cordian容器不可见/未创建,我没有看到任何错误 require(["dijit/layout/AccordionContainer", "dijit/layout/ContentPane", "do

我是Dojo新手,我使用的是Dojo 1.8,这里是我要做的——我创建了一个带有一些内容窗格的手风琴容器。这是可行的,当我点击页面上的某个按钮时,我正在调用一个函数(del),在这里我想删除现有的accorbian容器及其内容窗格。然后用一些不同的内容窗格重新创建手风琴容器。 调用del函数后,cordian容器不可见/未创建,我没有看到任何错误

require(["dijit/layout/AccordionContainer", "dijit/layout/ContentPane", "dojo/domReady!"], function( AccordionContainer, ContentPane){
var myPane = new ContentPane({id: "mycnpane",title: "This is a content pane", content: "<div id='lastContentPaneId'>my content pane</div>", style:"height:100px", doLayout: true});
var aContainer = new AccordionContainer({id: 'myacc', style:"height: 100%"}, "markup");
aContainer.addChild(new ContentPane({
title: "This is a content pane",
content: "Hi", style:"height: 80px", doLayout: false
}));
aContainer.addChild(new ContentPane({
title:"This is as well",
content:"<li><a href='javascript:void(0)' >report</a></li>", doLayout: true
}));
aContainer.addChild(new ContentPane({
title:"This too",
content:"Hello im fine.. thnx"
}));
aContainer.addChild(myPane);
aContainer.startup();
});

function del(){
require(["dijit/registry", "dojo/dom","dijit/layout/AccordionContainer", "dijit/layout/ContentPane", "dojo/domReady!"], function( registry, dom, AccordionContainer, ContentPane){
var aContainer = registry.byId("myacc");

console.log(aContainer);

if(aContainer){

aContainer.destroyRendering(false);
aContainer.destroy(false);

}

aContainer = new AccordionContainer({style:"height: 100%","isLayoutContainer": true, "doLayout": false}, "markup");
console.log('testacc container::'+aContainer);

var mypane = new ContentPane({ id: '123', title: 'newly', doLayout: true });
mypane.set('content','<ul><li>1</li><li>2</li></ul>');

var mypane1 = new ContentPane({ id: '1234', title: 'newly', doLayout: true });
mypane1.set('content','<ul><li>1</li><li>2</li></ul>');

aContainer.addChild(mypane);
aContainer.addChild(mypane1);
aContainer.startup();

});
}
require([“dijit/layout/AccordionContainer”,“dijit/layout/ContentPane”,“dojo/domReady!”),函数(AccordionContainer,ContentPane){
var myPane=newcontentpane({id:“mycnpane”,标题:“这是一个内容窗格”,内容:“我的内容窗格”,样式:“高度:100px”,doLayout:true});
var aContainer=newacordioncontainer({id:'myacc',style:“height:100%”,},“markup”);
aContainer.addChild(新内容窗格({
标题:“这是一个内容窗格”,
内容:“嗨”,样式:“高度:80px”,布局:假
}));
aContainer.addChild(新内容窗格({
标题:“这也是”,
内容:“
  • ”,doLayout:true })); aContainer.addChild(新内容窗格({ 标题:“这也是”, 内容:“你好,我很好..谢谢” })); aContainer.addChild(myPane); aContainer.startup(); }); 函数del(){ require([“dijit/registry”、“dojo/dom”、“dijit/layout/AccordionContainer”、“dijit/layout/ContentPane”、“dojo/domReady!”)、函数(注册表、dom、AccordionContainer、ContentPane){ var aContainer=registry.byId(“myacc”); 控制台日志(一个容器); if(容器){ a容器。渲染(假); a容器。销毁(错误); } aContainer=newacordioncontainer({style:“height:100%”,“isLayoutContainer”:true,“doLayout”:false},“markup”); log('testacc容器::'+aContainer); var mypane=newcontentpane({id:'123',title:'newly',doLayout:true}); mypane.set('content','
    • 1
    • 2
      • '); var mypane1=newcontentpane({id:'1234',title:'newly',doLayout:true}); mypane1.set('content','ul>
      • 1
      • 2
        • '); aContainer.addChild(mypane); aContainer.addChild(mypane1); aContainer.startup(); }); }
    您只需使用

    aContainer.destroyRendering(false)

    a容器销毁(假)

    使用

    aContainer.destroyRecursive()

    它适用于我使用的所有小部件。如果不起作用,请尝试使用placeAt将accordion放置在markup div中,如下所示

    var aContainer=新的AccordionContainer({id:'myacc',样式:“height:100%”)
    
    aContainer.placeAt(“标记”)

    然后摧毁它