2013-03-28 191 views
0

我有一个TabContainer类。这个类是Ext.tab.Panel的扩展。 的创建工作正常,但是,当我尝试将消息发送到实例萤火虫说:为什么不调用类的方法

"TypeError: tbbar.canAddTab is not a function"

类是:

Ext.define('KMA.view.environment.TabContainer',{ 
    extend: 'Ext.tab.Panel', 
    alias: 'widget.environmenttabcontainer', 

    initComponent: function(){ 
     [...] 
     this.callParent(arguments); 
    }, 
    createTab: function(aTitle,aToolTip,anItem){ 
     return { 
      title: aTitle, 
      itemId: aTitle + "Tag", 
      tabconfig: { 
       title: aTitle, 
       tooltip: aToolTip, 
       items: anItem 
      }  
     }; 
    }, 
    openTabs: function(){ 
     return this.getItems().length; 
    }, 
    maxOpenTabs: function(){ 
     return 7; 
    }, 
    canAddTab: function(){ 
     return (this.openTabs() < this.maxOpenTabs()); 
    }, 
    addTab: function(aTabCfg){ 
     this.add(aTabCfg); 
    } 
}); 

我的示例代码:

var tbbar = Ext.ComponentQuery.query('environmenttabcontainer'); 
console.log(tbbar); 
console.log(tbbar.canAddTab()); 

在第一个“console.log”Firebugs显示了TabContainer的实例,并显示了该类的方法。但是,为什么不工作?任何想法 ?

回答

2

我猜测它不工作,因为Ext.ComponentQuery.query返回一个数组。 这工作:

var t = new KMA.view.environment.TabContainer(); 
Ext.ComponentQuery.query('environmenttabcontainer')[0].canAddTab 
> function(){ 
     return (this.openTabs() < this.maxOpenTabs()); 
    } 

是否有一个原因,您使用的是组件查询,而不是具有直接的参考?

相关问题