2012-02-23 14 views
1

で偽がどのようにautoDestroyを行います。挙動:Extjs4

<html> 
    <head> 
    <link rel="stylesheet" type="text/css" href="../resources/css/ext-all.css" /> 
    <script type="text/javascript" src="../bootstrap.js"></script> 
    <script type="text/javascript">Ext.require('Ext.tab.*'); 

    Ext.onReady(function(){ 

var tabs = Ext.create('Ext.tab.Panel', { 
    width: 400, 
    height: 400, 
    renderTo: document.body, 
    autoDestroy: false, 
    items: [{ 
     title: 'Home', 
     html: 'Home', 
     itemId: 'home' 

    }, { 
     title: 'Tickets', 
     html: 'Tickets', 
     itemId: 'tickets', 
     closable: true, 
     closeAction: 'hide' 
    }] 
}); 

Ext.create('Ext.button.Button',{ 
    id: 'buttonId', 
    text: 'Recreate Tab', 
    renderTo: Ext.getBody(), 
    handler: function(){ 
     var tickets = tabs.child('#tickets'); 
     tickets.tab.show(); 

    } 
}); 

    }); 

</script> 
</head> 
    <body> 
    <div id="tabs1"> 
    <div id="script" class="x-hide-display"></div> 
    <div id="markup" class="x-hide-display"></div> 
</div> 
</body> 
</html> 
:偽のは、実際に私はタブを閉じると、ボタンのクリックで、それを再作成しようとしています。4. EXT-Jsの中で動作しますが、ここでのコードを参照してください。

しかし、それはUncaught TypeErrorを与えます:ボタンのクリックでnullのプロパティ 'tab'を読むことができません。どうして ?

答えて

1

閉じると、チケットパネルがタブパネルから削除されます。したがって、あなたがtabs.child('#tickets')を使用してそれを探すとき、あなたはnullを返す。次の行では、事実上null.tabと呼びます。パネルを閉じてからtabs.addを使用して戻す必要があります。

+0

「パネルを閉じる前にそのパネルを追跡してから、tabs.addを使用して戻す必要があります」という意味を理解できませんでした。 autoDestroyの目的ではありません:falseは、タブのインスタンスを破棄せず、ただ非表示にすることです。 – user1227794

+0

破壊されませんが、タブパネルから削除されます。あなたは 'Ext.create'の直後に' tabs.child ... 'を試してから、その変数をハンドラのタブに追加するか、あるいは元々作成した設定を' tabs.add'だけ追加することができます。 –

+0

パネルを閉じてからtabs.addを使用して戻す方法を説明することは可能でしょうか?お願いします? – user1477388