2012-02-23 72 views
1

虛假如何autoDestroy:虛假實際工作中分機 - js 4. 我打算關閉該選項卡,然後重新創建它的點擊按鈕,在這裏看到的代碼:行爲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> 

但它提供了未捕獲的TypeError:單擊按鈕時無法讀取null的屬性「選項卡」。爲什麼?

回答

1

關閉後,將從選項卡面板中刪除工單標籤。因此,當你使用tabs.child('#tickets')尋找它時,你會得到空白。在下一行中,您正在有效地調用null.tab,因此發生錯誤。您需要在面板關閉前跟蹤該面板,然後使用tabs.add將其恢復。

+0

沒有得到「你需要在面板關閉之前跟蹤面板,然後使用tabs.add將其恢復」。不是破解的目的:false是不破壞標籤的實例,但只是隱藏它。 – user1227794 2012-02-23 17:15:50

+0

它不會被破壞,但會從標籤面板中刪除。您可以在'Ext.create'後立即嘗試'tabs.child ...',然後將該變量添加到處理程序中的選項卡,或者只是'tabs.add'您最初創建它的配置。 – 2012-02-23 18:26:23

+0

您是否可以詳細說明如何「在面板關閉之前跟蹤面板,然後使用tabs.add將面板恢復。」請? – user1477388 2014-02-14 15:20:43