Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用ExtJS为选项卡添加书签?_Extjs_Extjs4.1_Tabpanel - Fatal编程技术网

使用ExtJS为选项卡添加书签?

使用ExtJS为选项卡添加书签?,extjs,extjs4.1,tabpanel,Extjs,Extjs4.1,Tabpanel,需要一些关于ExtJS中标签书签的帮助 我有一个包含多个选项卡的选项卡面板,单击各个选项卡可以更改URL。我目前正在使用哈希。但是,当我使用应用程序的“id+分隔符+其他id”URL直接导航到页面时,我无法恢复应用程序 以下是示例代码: launch : function() { Ext.state.Manager.setProvider(new Ext.state.CookieProvider( { expires : new D

需要一些关于ExtJS中标签书签的帮助

我有一个包含多个选项卡的选项卡面板,单击各个选项卡可以更改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
config(使用
Ext.state.Manager
Ext.state.CookieProvider
)保存页面的当前状态,我目前已经解决了这个问题

但是,我使用的url应该在任何时间长度内都有效

另外,如果我上次访问的URL是…/apps/Bookmarking/services.html#myTabs/5 如果我将我的URL改回…/apps/Bookmarking/services.html,它应该会回到我的默认(在我的例子中是第一个)选项卡。相反,它导航回…/apps/Bookmarking/services.html#myTabs/5

我怎样才能纠正这一点

提前谢谢

PS:请检查这个链接,查看我对这个问题所做的全部更改

我认为你的观点是正确的。不幸的是,我认为你刚刚发现了一个漏洞

而不是总是在渲染后设置活动选项卡

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);

我尝试使用
Ext.util.History
功能实现这个概念,但是,我无法为选项卡添加书签。示例:应跳转到选项卡4,但它会返回到选项卡1:子选项卡1。