2014-11-20 108 views
0

我在页面中使用dojo创建了多个选项卡,我想每刷新一次页面秒,但只想刷新iam指向每隔5秒的当前选项卡。请找到小提琴http://jsfiddle.net/5yn2hLv9/4/TabContainer刷新

下面是示例代码:

<div dojoType="dijit.layout.TabContainer" style="width: 100%;height: 100px" tabStrip="true"> 
    <div dojoType="dijit.layout.ContentPane" title="First tab" selected="true"> 
     11 
    </div> 
    <div dojoType="dijit.layout.ContentPane" title="Second tab"> 
     2222 
    </div> 
    <div dojoType="dijit.layout.ContentPane" title="Last tab"> 
     333333 
    </div> 
</div> 

- 编辑 -

每5秒后,当页面刷新,示出了页面上的所有3个标签数据和页面加载,我想为了避免在加载时在页面上显示所有标签数据,就像在我的应用程序中一样,每个标签都包含大量数据,每次刷新时都会显示大量从所有标签中获取的数据。

+0

你能告诉我为什么你需要刷新吗?有没有新的数据来自ajax调用? – 2014-11-21 09:24:45

+0

@dorinaji - 数据将来自数据库,我需要刷新屏幕以显示最新数据。 – user4199704 2014-11-21 12:24:12

回答

0

你应该把外div元素(容器)的ID,然后,你将能够获得所选择的选项卡:

dijit.byId('id_of_outer_div').selectedChildWidget

但我不知道你是否可以使用location.reload()仅用特定选项卡重新加载。

+0

每5秒刷新一次页面后,页面上显示所有3个标签数据,页面正在加载,我想避免在页面加载时显示页面上的所有标签数据,就像我的应用程序中每个标签包含大量数据并且每次刷新其显示大量从所有选项卡获得的id的数据时。 @ xaris08。 – user4199704 2014-11-20 18:58:24

+0

我不知道如果我得到你,但如果你想刷新整个页面(location.reload())并只刷新选定的选项卡,恐怕你不能这样做,这是合理的重新加载所有3个选项卡。否则,如果只想重新加载特定选项卡,则可以使用特定于选项卡的AJAX调用请求(xhrGet()函数)来重新加载每个选项卡。 请看看,如果有帮助: http://stackoverflow.com/questions/10889319/is-there-a-working-dojo-tabcontainer-can-successfully-reload-in-a-contentpane – xaris08 2014-11-21 09:49:10

1

xaris08说加载标签时没有重新加载页面是真的,你应该使用我推荐的标签特定的ajax,但要回答你的问题,如果你坚持重新加载页面,我不会推荐你可以做一些肮脏的方式,如下面的代码。

<div dojoType="dijit.layout.TabContainer" style="width: 100%;height: 100px" tabStrip="true"> 
    <div dojoType="dijit.layout.ContentPane" title="First tab" selected="true"> 
    <div id="content1"></div> 
    </div> 
    <div dojoType="dijit.layout.ContentPane" title="Second tab"> 
    <div id="content2"></div> 
    </div> 
    <div dojoType="dijit.layout.ContentPane" title="Last tab"> 
     <div id="content3"></div> 
    </div> 
</div> 



require(["dijit/layout/TabContainer", "dijit/layout/ContentPane", "dojo/parser"]); 

    setTimeout(function() { location.reload(true);}, 8000); 

    require(["dojo/html", "dojo/dom", "dojo/on", "dojo/domReady!"], 
    function(html, dom, on){ 
    setTimeout(function() { 
     html.set(dom.byId("content1"), "11"); 
     html.set(dom.byId("content2"), "22222"); 
     html.set(dom.byId("content3"), "33333333"); 
       }, 1000); 


    }); 

这样每次加载你给某个页面的标签渲染和一秒不够,那么你注射使用html.set DOM中值。看看吧here