sencha extjs4.1 ext.tab.panel activetab

Posted

技术标签:

【中文标题】sencha extjs4.1 ext.tab.panel activetab【英文标题】: 【发布时间】:2015-07-17 14:44:50 【问题描述】:

如何在 tab.panel 中将 setactivetab 用于网格? 我需要我的加载按钮/网格留在它激活的选项卡面板中。 当我单击第二个选项卡中的按钮时,我希望设置第二个选项卡。相反,它返回到第一个选项卡。下面是我的基本代码,因为我去掉了使用 setactivetab 的尝试:

<script type="text/javascript">
//begin menu bar
Ext.define('MainNavBar.view.ui.MainNavPanel', 
    extend: 'Ext.tab.Panel',
    height: 170,
    width: 1000,
    activeTab: 0,
    initComponent: function()     
        var me = this;
        me.items = [
            
                xtype: 'panel',
                height: 145,
                width: 684,
                title: 'Bus Data',
                dockedItems: [
                    
                        xtype: 'toolbar',
                        height: 145,
                        width: 938,
                        dock: 'top',
                        items: [

                            
                                xtype: 'buttongroup',
                                height: 140,
                                title: 'Bid',
                                columns: 2,
                                layout: 
                                    columns: 2,
                                    type: 'table'
                                ,
                                items: [
                                    
                                        xtype: 'button',
                                        text: 'Bid Doc',
                                        handler: function()window.location = '/biddoc/';                                        
                                    ,
                                ]
                            ,
                        ]
                    
                ]
            ,
            
                xtype: 'panel',
                height: 115,
                title: 'Reporting',
                dockedItems: [
                    
                        xtype: 'toolbar',
                        height: 140,
                        dock: 'top',
                        items: [
                            
                                xtype: 'buttongroup',
                                height: 140,
                                title: 'Sales Data',
                                columns: 2,
                                layout: 
                                    columns: 2,
                                    type: 'table'
                                ,
                                items: [
                                    
                                        xtype: 'button',
                                        text: 'Batch',
                                        handler: function()window.location = '/salesdatabatch/';  
                                    
                                ]
                            
                        ]
                    
                ]
            ,

        ];
        me.callParent(arguments);
    
);       
Ext.define('MainNavBar.view.MainNavPanel', 
    extend: 'MainNavBar.view.ui.MainNavPanel',

    initComponent: function() 
        var me = this;
        me.callParent(arguments);
    
);
Ext.Loader.setConfig(
    enabled: true
);
Ext.application(
    name: 'MainNavBar',
    launch: function() 
        Ext.QuickTips.init();

        var cmp1 = Ext.create('MainNavBar.view.MainNavPanel', 
            renderTo: menu
        );
        cmp1.show();
    
);
//end menu bar

        </script>

【问题讨论】:

你打算用代码来做这个吗:handler: function()window.location = '/biddoc/'; ? 尝试为您的MainNavBar.view.ui.MainNavPanel 添加 xtype: mainNavPanel。使用处理函数执行以下操作: this.up('mainNavPanel).setActiveTab(0 or 1); 用于适当的索引 好的,所以我在第 3 行将 xtype: mainNavPanel 添加到 MainNavBar.view.ui.MainNavPanel,如下所示: Ext.define('MainNavBar.view.ui.MainNavPanel', xtype: mainNavPanel, Now处理程序,我如何添加 this.up('mainNavPanel).setActiveTab(0 or 1); 到处理程序: function()window.location = '/biddoc/'; ? 一些好消息。我能够使用您的建议从“biddoc”按钮触发“报告”标签。但在“报告”选项卡(第二个选项卡)闪烁后,页面会返回到选项卡 0。我用于触发器的代码是这样的: handler: function()window.location = '/biddoc/';this.up('mainNavPanel').setActiveTab(1); 所以 setActiveTab(1) 似乎工作了一秒钟,然后返回到默认选项卡 (0)。有什么想法吗? 【参考方案1】:

让我们编译我们在这里讨论的所有内容并做出正确的答案。

@Lorenz Meyer 的观点很好。你有架构问题,你可以通过Ext.Ajax.request(/** code here **/); 来解决这个问题。所以没有重定向。 如果您需要如何做到这一点的好例子,请参考:Extjs - Servlets

但是你没有问架构问题所以这是我的答案。

所以经过一番思考,我只是对您的代码进行了一些更正。请看一下,如果您喜欢它,请将其标记为已回答:

Ext.define('MainNavBar.view.ui.MainNavPanel', 
    extend: 'Ext.tab.Panel',
    height: 170,
    width: 1000,
    activeTab: 0,
    initComponent: function()     
        var me = this;
        me.items = [
            
                xtype: 'panel',
                height: 145,
                width: 684,
                title: 'Bus Data',
                dockedItems: [
                    
                        xtype: 'toolbar',
                        height: 145,
                        width: 938,
                        dock: 'top',
                        items: [

                            
                                xtype: 'buttongroup',
                                height: 140,
                                title: 'Bid',
                                columns: 2,
                                layout: 
                                    columns: 2,
                                    type: 'table'
                                ,
                                items: [
                                    
                                        xtype: 'button',
                                        text: 'Bid Doc',
                                        handler: function()window.location = '/biddoc/';                                        
                                    ,
                                ]
                            ,
                        ]
                    
                ]
            ,
            
                xtype: 'panel',
                height: 115,
                title: 'Reporting',
                dockedItems: [
                    
                        xtype: 'toolbar',
                        height: 140,
                        dock: 'top',
                        items: [
                            
                                xtype: 'buttongroup',
                                height: 140,
                                title: 'Sales Data',
                                columns: 2,
                                layout: 
                                    columns: 2,
                                    type: 'table'
                                ,
                                items: [
                                    
                                        xtype: 'button',
                                        text: 'Batch',
                                        handler: function()window.location = '/salesdatabatch/';  
                                    
                                ]
                            
                        ]
                    
                ]
            
        ],
        listeners: 
            afterrender: function(component, eOpts) 
                var urlInfo = document.location.href;
                if(urlInfo.contains('salesdatabatch'))
                    component.setActiveTab(1);
                
                if(urlInfo.contains('biddoc'))
                    component.setActiveTab(0);
                
            
        ,
        me.callParent(arguments);
    
); 

【讨论】:

以上是关于sencha extjs4.1 ext.tab.panel activetab的主要内容,如果未能解决你的问题,请参考以下文章

Sencha CMD 构建过程应用于现有的 ExtJs 4.1 应用程序

如何在 extjs4.1 中使用 rest webservice [关闭]

sencha touch 中的操作栏

如何从 extjs4.1 中的应用程序控制器调用视图

如何在extjs4.1中减少轮播容器中三个视图的高度

ExtJS 4.1 - 检索嵌套 JSON 的 hasOne 信息