无法获取选项卡面板的对象

Posted

技术标签:

【中文标题】无法获取选项卡面板的对象【英文标题】:Cannot get the object of a tabpanel 【发布时间】:2014-06-20 14:53:23 【问题描述】:

我在边框布局的中心区域有一个网格。在网格中单击特定项目时,我需要更改中心区域以显示选项卡面板。我无法获取 tabpanel 对象。

在 ctrlpanel 文件中,在网格侦听器上,我使用 componentQuery 来获取 tabpanel('ccmain') 对象。它返回未定义。

我正在使用 componentQuery 成功地在中心面板文件(布局中心区域)中获取“ccmain”,但是当我将此代码移动到 ctrlpanel 文件(中心面板中的项目之一)时它失败了。 ComponentQuery 不再返回选项卡面板“ccmain”。 ComponentQuery 确实返回中心面板或视口。我试图做 centerpanel 或 viewport.down 来找到'ccmain',但这也返回未定义。如果您能告诉我如何获取标签面板或我做错了什么,我将不胜感激。感谢您的宝贵时间。

ctrlPanel.js

Ext.define('ServcSol.view.CtrlPanel',
extend: 'Ext.Panel',

alias: 'widget.ctrlPanel',
xtype: 'ctrlPanel',
itemId: 'ctrlPanel',

requires:[
    'ServcSol.store.FacilityStore'
    ],

initComponent: function ()   

var me = this;

Ext.applyIf(me, 

items: [ 

  xtype: 'panel',
  height: 750,
  title: 'Control Panel',
  items: [
  
   xtype: 'gridpanel',
   padding: '20 20 5 20',
   store: 'WorkHistoryStore',
   height: 590,
   width: '100%',
   border: true,
   columns: [
   
     width: 110,
     dataIndex: 'wrkhistDate',
     text: 'Due Date'
   ,
   
     width: 100,
     dataIndex: 'wrkType',
     text: 'Work Type'
   
 ], 
 listeners : 
   itemclick: function(dv, record, item, index, e) 
   
     if(record.get('wrkType') == 'Test')
                            
           var tabPanel = Ext.ComponentQuery.query('ccmain')[0];
           console.log('tabPanel is: ', tabPanel);
           var tabIndex = tabPanel.items.findIndex('id', 'hazard');
           var center = Ext.ComponentQuery.query('centerpanel')[0];
           center.getLayout().setActiveTab(tabIndex);
     

ccmain.js

Ext.define('ServcSol.view.ccMain', 
extend: 'Ext.tab.Panel',
itemId: 'ccmain',
alias: 'widget.ccmain',
xtype: 'ccmain',

initComponent: function () 

var me = this;

Ext.applyIf(me, 
items: [
      
        xtype: 'facility'
      ,
      
        xtype: 'hazListing'
      ,
      
        xtype: 'hazard'
      , 
      
        xtype: 'testFormRP'
      ,
      
        xtype: 'testFormDC'
       
       ]
    );      
  this.callParent(arguments);
  
 );

【问题讨论】:

您的代码没有意义。您正在尝试将活动组件设置为字符串。 抱歉,输入错误。代码没有达到这一点,因为 componentQuery 没有返回“ccmain”。编辑了帖子。 【参考方案1】:

其中一个原因可能是ccmain 未实例化,因为ComponentQuery.query 只能找到实例化的组件。然后,即使找到ccmain,您也不能那样设置它的活动项。最简单的方法是分配标签itemIds,然后调用setActiveTab:

tabPanel.setActiveTab(itemIdOfTheTab)

【讨论】:

以上是关于无法获取选项卡面板的对象的主要内容,如果未能解决你的问题,请参考以下文章

MVC Sencha Touch 无法正确显示选项卡面板

jQuery EasyUI 选项卡面板tabs使用实例精讲

遍历选项卡列表并使用 if 语句显示不同的视图

折叠引导选项卡 - 无法切换 .active 选项卡类

从另一个选项卡面板激活选项卡面板

Sencha 触摸在选项卡面板中显示图像