2012-01-21 9 views
1

指定したURLを新規または既存のタブ(contentPane)にロードしようとすると、次のような機能があります。既存のタブが指定されている場合元のURLは新しい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

これは私の更新機能は、それが私の作品、どのように見えるかです:私はちょうどこの** tab.href = URLのような**のhref **属性を設定した場合と思われる

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に設定するのが最もクリーンな方法です。なぜあなたはそれを本当に設定したのですか?タブにはサーバーから一貫してリフレッシュする必要があるコンテンツがありますか?

何が欲しいのは(既存のタブのための)このようなものである場合:

  1. ユーザーは
  2. 道場が行くとリフレッシュが
  3. タブの内容を既存のあなたのマニュアル(jQueryのベース)ハンドラが行くと取得をクリックしますいくつかの他のコンテンツ と(とそれを使用するか、そうでない場合)に追加したコンテンツ道場 が自動的

をリフレッシュし、あなたがshにこのような何かを行うことができるウルド:ちょうどタブはそのコンテンツ用のサーバーに行った後に発射し、あなたのタブのcontentPaneにイベントハンドラを追加します

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

を。

+0

; **ん** tab.title = title; ** – MikeGA

+0

'tab.set( 'title'、 'My Incredible Title')を使って試してみてください。 ' – mtyson

+0

恐ろしい!それは動作します! – MikeGA