删除并创建带有内容窗格的 dojo 手风琴容器

Posted

技术标签:

【中文标题】删除并创建带有内容窗格的 dojo 手风琴容器【英文标题】:remove and create dojo accordian container with content panes 【发布时间】:2013-09-22 01:18:08 【问题描述】:

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

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();

);

【问题讨论】:

【参考方案1】:

你可以简单地使用代替

aContainer.destroyRendering(false);

aContainer.destroy(false);

使用

aContainer.destroyRecursive();

它适用于我使用的所有小部件。如果这不起作用,请尝试使用 placeAt 将手风琴放置在标记 div 中,看起来像这样

var aContainer = new AccordionContainer(id: 'myacc', style:"height: 100%"); aContainer.placeAt("markup")

然后销毁递归

【讨论】:

以上是关于删除并创建带有内容窗格的 dojo 手风琴容器的主要内容,如果未能解决你的问题,请参考以下文章

我可以在 dojo 手风琴中打开特定条目吗?

显示/隐藏以作为手风琴工作

Jquery 手风琴没有删除类,也没有将其展开文本交换为折叠

单击时折叠 jQuery 手风琴

Bootstrap 4:如何创建一个带有手风琴的下拉菜单?

带有 AJAX 的 JQuery 需要用多维数组创建手风琴