2016-08-22 7 views
0

私はタブパネルを持ち、多くの子を持っています。それぞれは閉じることができます。子がいないときにタブパネル自体を削除したい。子パネルがないときはタブパネル全体を閉じます

listeners: { 
    close: function(element) { 
     var detailTabPanel = element.up('DetailTabPanel'); 
     if(detailTabPanel.items.length <= 1) 
     { 
      detailTabPanel.destroy(); 
     } 
    } 
} 

私はクローズアクションのために上記のようなコードを書いています。しかし、私はのようなエラーが表示されます

Uncaught TypeError: Cannot read property 'get' of null DetailTabPanel is the tabpanel. 

答えて

1

ほぼあります!このようにそれを試してみてください。ここ

listeners: { 
    remove: function(tabpanel, child, eOpts) { 
     if (tabpanel.items.length === 0) { 
      tabpanel.destroy(); 
     } 
    } 
} 

参照フィドル:https://fiddle.sencha.com/#fiddle/1fo2

あなたはリスナーの内側callParentを行う必要はありません。

+0

consoleそのスローエラー。 – Hacker

+0

タブパネルはタブを削除してそのレイアウトを更新しています。タブパネルの取り外しを遅らせることは、それを解決するようである。 2つの変更点:1) 'destroy'を' close'に変更しました。 Destroyはしばしば少し強力であり、closeはクリーナー除去を可能にし、 'close'イベントを発生させます。 2)ビューパネル全体が削除されないように、タブパネルをコンテナパネルの内側に配置しました。 –

+0

私は上記の変更をFiddleの例に取り入れました –

0

あなたは間違ったイベントを使用しています。 close子供のイベント(パネルからタブが削除された後に呼び出される)をリッスンするのではなく、タブパネル自体のremoveイベントを待ち受けます。

+0

リスナー:{ 削除:関数(要素、成分、eOpts){ IF(element.items.length === 0){ element.destroy()。 element.callParent(); } } }私は上記のコードを試したが、未知のエラーのようなエラーが表示されます:this.callParent()が呼び出されましたが、親クラス(Ext.Base)にそのようなメソッド(fire)が見つかりません – Hacker

関連する問題