0

私は怠惰ではありませんが、dojo TabContainer(id=dojoTabbedPane) を含む div(id=refreshable) をリロードしようとする多くの方法を試しました。ページをリロードするたびに、各タブのすべてのコンテンツが 1 つのスタックに表示されます (タブが表示されません)。

私はいくつかの調査を行い、質問をして、jQuery の読み込み前に使用し、再読み込み後dijit.byId("dojoTabbedPane").destroyRecursive();に呼び出しましたが、機能しませんでした。dojo.parser.parse(dojo.byId("dojoTabbedPane"));

それで、誰でも簡単なスニペットを共有できますか? 私は多くの理論的な方法を試してみることを誓いますが、うまくいくはずです。

ここに大量のコードを貼り付ける方法がわかりません。それ以外の場合は、基本サンプルを提供します。興味のある方は修正を手伝ってください。Dojo Web サイトから 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>
4

1 に答える 1

2

完全なコールバックの実行時にロードが #replaceable の innerHTML をすでに設定しているかどうかにかかわらず、jQuery に関する質問です。ただし、タイムアウト行のコメントを外して「フックを解除」し、パーサーを呼び出す前にロード メカニズムを終了させます。だからこれを試してください:

<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>
于 2012-06-05T17:11:32.960 に答える