dojo 中的内容窗格

问题描述 投票:0回答:1

当我单击选项卡容器中另一个内容窗格 (A) 内的按钮时,我会创建一个内容窗格 (B)。

在 B 中,我已经使用 closeable to true 以及 close 函数。现在,当我关闭 B 时,它工作正常,但我的要求是,如果我单击 A 中的按钮,应该再次创建 B 如何执行此操作。我尝试过在关闭函数中将 null 分配给内容窗格变量,以便再次创建新的内容窗格,但出现错误无法读取 null 所有者文档的属性

javascript dojo contentpane
1个回答
0
投票

我认为你的问题出在内部

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>

© www.soinside.com 2019 - 2024. All rights reserved.