当我单击选项卡容器中另一个内容窗格 (A) 内的按钮时,我会创建一个内容窗格 (B)。
在 B 中,我已经使用 closeable to true 以及 close 函数。现在,当我关闭 B 时,它工作正常,但我的要求是,如果我单击 A 中的按钮,应该再次创建 B 如何执行此操作。我尝试过在关闭函数中将 null 分配给内容窗格变量,以便再次创建新的内容窗格,但出现错误无法读取 null 所有者文档的属性
我认为你的问题出在内部
showLayerListFunction
,
请参阅下面的示例,您可以在删除选项卡后重新创建选项卡
require(["dojo/on", "dojo/dom", "dojo/ready", "dijit/registry","dojo/dom-construct", "dijit/layout/TabContainer", "dijit/layout/ContentPane", "dijit/form/Button",
"dojo/dom-style"
], function(On, dom, ready, registry,domConstruct, TabContainer, ContentPane, Button, domStyle) {
ready(function() {
var tabContainer = registry.byId("center");
var tab1 = registry.byId("tab1");
var btn = registry.byId("show");
var tab2;
btn.on("click", function(e){
// if pane exist skip creation
if(!registry.byId("legendid")) {
tab2 = new ContentPane({title:"List",id:"legendid",closable:true });
tabContainer.addChild(tab2);
}
tabContainer.selectChild(tab2);
})
});
});
html,
body {
width: 100%;
height: 100%;
margin: 0;
}
#center {
height: 100% !important;
}
<link href="//ajax.googleapis.com/ajax/libs/dojo/1.10.0/dijit/themes/claro/claro.css" rel="stylesheet" />
<script>
dojoConfig = {
parseOnLoad: true,
async: true
};
</script>
<script src="//ajax.googleapis.com/ajax/libs/dojo/1.10.0/dojo/dojo.js"></script>
<body class="claro">
<div id="center" data-dojo-type="dijit/layout/TabContainer" >
<div id="tab1" data-dojo-type="dijit/layout/ContentPane" title="tab1">
<div data-dojo-type="dijit/form/Button" id="show"> Show Layer List</div>
</div>
</div>
</body>