2013-03-28 2 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"방화 벽은 TabContainer의 인스턴스를 보여 주며 클래스의 메소드를 보여줍니다. 그러나, 왜 일하지 않습니까? 어떤 생각?

답변

2

Ext.ComponentQuery.query이 배열을 반환하기 때문에 작동하지 않는 것으로 추측됩니다. 이 작동 :

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

는 구성 요소 쿼리를 사용하는 대신 직접 참조가 발생하는 이유가 있습니까?

관련 문제