2012-01-21 35 views
1

我有以下功能,我尝试将指定的url加载到新的或现有的选项卡(contentPane)中,但我大多数情况下都能工作,但是当指定现有选项卡时原始网址仍然重新加载,而不是添加新的HTML,我怎样才能完成现有标签传递的部分,而不必在创建新标签时删除属性refreshOnShow?使用Dojo打开某个选项卡中的URL

openTab = function(url,title, id){ 
    var tab = dijit.byId(id); 
    var centerPane = dijit.byId('centerPane'); 

    if (tab){ 
     //if target container exists then let's load the url and add it to the container 
     centerPane.selectChild(tab); 
     $.get(url, function(data) { 
      $('#'+id).html(data); 

     }); 
     centerPane.selectChild(tab); 


    } else { 

     var newTab = new dijit.layout.ContentPane(
       { 
       'title': title, 
       href:url, 
       closable:true, 
       selected:true, 
       parseOnLoad:true, 
       preventCache:true, 
       refreshOnShow:true 
      }, id); 
     centerPane.addChild(newTab); 
     centerPane.selectChild(newTab); 
    } 
}; 

回答

1

这是我更新的功能看起来如何,它为我工作:

openTab = function(url,title, id){ 
     var tab = dijit.byId(id); 
     var centerPane = dijit.byId('centerPane'); 
     if (tab){ 
      //if target container exists then let's load the url and add it to the container 
      tab.href = url; 
      tab.set('title',title); 
      centerPane.selectChild(tab); 
     } else {   
      var newTab = new dijit.layout.ContentPane(
       { 
        'title': title, 
        href:url, 
        closable:true, 
        selected:true, 
        parseOnLoad:true, 
        preventCache:true, 
        refreshOnShow:true 
       }, id); 
      centerPane.addChild(newTab); 
      centerPane.selectChild(newTab); 
     } 


    }; 
1

所以,你在做什么基本上是说,当这个标签被重新打开,让我追加我的内容,并且道场是说,“我刚打开此选项卡,并refreshOnShow是真实的,所以让我再次从服务器获取我的内容'。

我认为最简洁的方式来解决这个问题,就是按照你说的做,并将refreshOnShow设置为false。为什么你将它设置为true,该选项卡是否需要从服务器始终刷新内容?

如果你想要的是这样的(对于现有的标签):

  1. 用户点击
  2. 道场去,并刷新现有的标签内容
  3. 你手动(基于jQuery)处理器处理的,并得到其他一些内容 并追加到(或以其他方式使用它)的内容道场 自动刷新

然后你SH乌尔德能够做这样的事情:

newTab.connect(newTab, 'onLoad', function(){ 
// do my stuff after the dojo content has loaded 
}) 

这只是增加了一个事件处理程序到contentPane您标签触发该标签已经到服务器的内容之后。

+0

看来,如果我刚才设置的** **的href属性类似这样的** tab.href =网址; **做诀窍,但是我不能通过同样的方式重新设置现有标签的标题:** tab.title = title; ** – MikeGA

+0

尝试使用'tab.set('title','我难以置信的标题') ' – mtyson

+0

太棒了!这样可行! – MikeGA

相关问题