0

私は TabContainer クラスを持っています。このクラスは Ext.tab.Panel の拡張です。作成は正常に機能しますが、インスタンス Firebug にメッセージを送信しようとすると、次のように表示されます。

「TypeError: tbbar.canAddTab は関数ではありません」

クラスは次のとおりです。

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 のインスタンスを示し、クラスのメソッドを示します。しかし、なぜうまくいかないのですか?何か案が ?

4

1 に答える 1

2

Ext.ComponentQuery.query配列を返すため、機能していないと思います。これは機能します:

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

直接参照ではなく、コンポーネント クエリを使用している理由はありますか?

于 2013-03-28T23:39:02.777 に答える