Как autoDestroy ложь на самом деле работает в Ext-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>
Но это дает Uncaught TypeError: Невозможно прочитать вкладку свойств «null» при нажатии кнопки. Зачем ?
Не получил того, что подразумевается под «вам нужно будет отслеживать панель перед ее закрытием, а затем использовать tabs.add, чтобы вернуть ее». Не является целью autoDestroy: false - не уничтожить экземпляр вкладки, а просто скрыть ее. – user1227794
Не уничтожается, но удаляется с панели вкладок. Вы можете попробовать 'tabs.child ...' сразу после того, как вы внесете его 'Ext.create', а затем добавьте эту переменную в вкладки в обработчике или просто 'tabs.add' конфигурацию, которую вы использовали для ее первоначального создания. –
Не могли бы вы рассказать о том, как «отслеживать панель перед ее закрытием, а затем использовать tabs.add, чтобы вернуть ее». Пожалуйста? – user1477388