2013-03-11 99 views
3

需要一些幫助書籤標籤在Ext jS。使用Ext JS書籤製表符?

我有一個包含多個選項卡並單擊各個選項卡更改URL的選項卡面板。我目前使用散列。但是,當我使用其「ID +分隔符+其他ID的」URL直接導航到頁面時,我無法恢復應用程序。

下面是示例代碼:

launch : function() { 
    Ext.state.Manager.setProvider(new Ext.state.CookieProvider(
      { 
       expires : new Date(new Date().getTime() 
         + (1000 * 60 * 60 * 24 * 7)) 
      })); 

var tabPanel=new Ext.TabPanel({ 
    width:1000, 
    title:'TabPanel', 
    height:700, 
    id:'main-tab', 
    activeTab:0, 
    layout:'fit',  
    region:'north', 
    stateful:true, 
    stateId:'tp1', 
    stateEvents:['tabchange'], 
    getState:function(){ 
     return { 
      activeTab:this.items.findIndex('id',this.getActiveTab().id)    
     }; 
    }, 
    applyState:function(s){ 
     this.setActiveTab(s.activeTab); 
    }, 
    items: 
     [ 
      //included tabID and title 
     ], 
    listeners:{    
       tabchange:function(tabPanel,currTab){          
        window.location.hash='#myTabs/'+currTab.id; //config.position; 
        console.log(window.location);     
       } 
     } 
}); 

var viewport=new Ext.Viewport({ 
    id:'main-viewport',  
    layout : 'fit', 
    title:'Main', 
    deferredRender:true, 
    items : [ tabPanel ], 
    width:200, 
    region:'west' 
}); 

viewport.doLayout(); 

我已經通過節約使用expire配置(使用Ext.state.ManagerExt.state.CookieProvider)頁面的當前狀態,目前解決了這個問題。

但是,我使用的網址應該是在任何時間長度上都有效

此外,當如果我上次訪問的網址是... /應用/書籤/ services.html#myTabs/5 和我chnage我的URL回... /應用/書籤/ services.html,它應該回到我的默認值(首先在我的情況)選項卡。相反,它會導航回.../apps/Bookmarking/services.html#myTabs/5

我該如何糾正?

在此先感謝!

PS:請檢查該鏈接,整套變化的,我對這個問題 http://www.sencha.com/forum/showthread.php?154174-Bookmarking-and-History-in-extjs

+0

我嘗試過使用'Ext.util.History'功能來實現這個概念,但是我無法爲這些標籤添加書籤。例如:http://dev.sencha.com/deploy/ext-4.0.0/examples/history/history.html#main-tabs:tab4應跳轉到** Tab 4 **,但它回退到**標籤1:子標籤1 **。 – isuvaish 2013-03-13 06:11:23

回答

0

我認爲你是在正確的軌道看着Ext.util.History上進行。不幸的是,我認爲你剛剛在their example中發現了一個錯誤。

而不是總是在渲染後設置活動選項卡;

function onAfterRender() { 
    ... 

    var activeTab1 = Ext.getCmp('main-tabs').getActiveTab(), 
     activeTab2 = activeTab1.getActiveTab(); 

    onTabChange(activeTab1, activeTab2); 
} 

也許嘗試設置它,如果沒有令牌存在;

Ext.util.History.on('ready', function(history){ 
    if (!history.getToken()) { 
     var activeTab1 = Ext.getCmp('main-tabs').getActiveTab(), 
      activeTab2 = activeTab1.getActiveTab(); 

     onTabChange(activeTab1, activeTab2); 
    } 
}, this);