javascript - 是否有一个工作 dojo tabContainer 可以在 contentPane 中成功重新加载?

标签 javascript dom dojo

我并不懒惰,但尝试了很多方法尝试重新加载包含 dojo TabContainer(id=dojoTabbedPane) 的 div(id=refreshable)。每次重新加载页面后,每个选项卡中的所有内容都会显示为一堆(选项卡丢失)。

我做了一些研究,提出问题,并在 jQuery 加载之前使用 dijit.byId("dojoTabbedPane").destroyRecursive(); ,然后调用 dojo.parser.parse(dojo. byId("dojoTabbedPane")); 重新加载后但从未工作。

那么,请问有人可以分享一个简单的片段吗?实际上可以向我展示 tabContainer 看起来没问题,它的容器已刷新?我发誓我尝试了很多理论方法,它应该有效,但是任何人都可以向我展示一个非常简单的代码来让我看看它的工作原理吗?

我不知道如何在这里粘贴大段代码,否则我会给出一个基本示例,以便大家有兴趣可以帮忙修改,这里我准备了一个来自Dojo网站的tabContainer,请帮我解决。谢谢!!

<script type="text/javascript" 
src="dojo/dojo/dojo.js"  
djConfig="parseOnLoad: true"></script> 

<script type="text/javascript" >
function refresh_data(url, id) {
j('#'+id).load(url+' #'+id+' > *', function (response) {
      dojo.parser.parse(dojo.byId("dojoTabbedPane"));
});
}
</script>
<script type="text/javascript">
    var login_url = '<spring:url value="/login" />';

    j(function() {
        setInterval('refresh_data("file:///D:/Dojo/dojo.tabbed.pane_very_good.html?hash="+Math.random(), "refreshable");', 9000); 
    });
    // this disables errors in IE7
    function noError(){return true;}
    window.onerror = noError;
</script>
<style type="text/css"> 
@import "dojo/dijit/themes/tundra/tundra.css"; 
</style>
<script type="text/javascript">
dojo.require("dojo.parser");
dojo.require("dijit.layout.TabContainer");
dojo.require("dijit.layout.ContentPane");
</script>
</head>
<body class="tundra">
    <!-- this div is only for documentation purpose, in real development environments, just take it out -->
<div style="width: 350px; height: 300px">
<div data-dojo-type="dijit.layout.TabContainer" style="width: 100%; height: 100%;">
    <div data-dojo-type="dijit.layout.ContentPane" title="My first tab" selected="false">
        Lorem ipsum and all around...
    </div>
    <div data-dojo-type="dijit.layout.ContentPane" title="My second tab"  selected="true">
        Lorem ipsum and all around - second...
    </div>
    <div data-dojo-type="dijit.layout.ContentPane" title="My last tab" closable="true">
        Lorem ipsum and all around - last...
</div>
</div>
</div>
</body>

最佳答案

这是一个关于 jQuery 的问题,在完整的回调运行时,加载是否已准备好设置 #replaceable 的innerHTML。但只需取消注释超时行以“取消 Hook ”并让加载机制在调用解析器之前完成。所以试试这个:

<div id="replaceable">

</div>

<script>
function refresh_data(url, id) {

  var w = dijit.byId("dojoTabbedPane"),
      domNode = dojo.byId(id);
  if(w)  w.destroyRecursive();

  j(domNode).load(url+' #'+id+' > *', function (response) {
      // setTimeout(function() {
         dojo.parser.parse(domNode);
         w = dijit.byId("dojoTabbedPane");
         w.resize(dojo.getMarginBox(domNode));
      // }, 200);

  });
}

dojo.addOnLoad(function() {
    var login_url = '<spring:url value="/login" />';
    setInterval('refresh_data("file:///D:/Dojo/dojo.tabbed.pane_very_good.html?hash="+Math.random(), "refreshable");', 9000); 
});
</script>

关于javascript - 是否有一个工作 dojo tabContainer 可以在 contentPane 中成功重新加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10889319/

相关文章:

javascript - 开 Jest ReferenceError : Cannot access '' before initialization

javascript - 按住箭头键时,如何在 Firefox 中获取自动重复的按键事件?

javascript - Dgrid更新数据存储

dojo - "<mce:script type="text/javascript">&lt;!-- --></mce :script>"是什么意思

javascript - Jquery 标签插件粘贴问题

javascript - 我需要为需要 1、2、3 或 4 位数字输入的输入创建一个正则表达式 - 但不会只接受 "0"

javascript - 使用 classList 检查 body 中的类

javascript - 使用 JavaScript 非阻塞地附加 DOM 元素

javascript - 将 html(text) 附加到元素而不影响同级元素?

dojo - 我可以在 dojo Accordion 中打开特定条目吗?