閉じるボタンを再利用できるようにしたいので、独自のクラスを作成して、それを必要とするビューにアタッチできるようにしました。ビューにアタッチされているビューをコントローラーに渡して、そのビューを閉じることができるようにしたいだけです。それはかなり単純なはずで、私はこれが何人がそれを行っていると思いますが、正しく動作させることはできません. ビューを閉じますが、 Uncaught TypeError: Cannot read property 'dom' of null というエラーが表示されます これは、一般的にビューが破棄されていないことを意味することを理解していますが、これはビューを破棄するように指示していると思いました:
Ext.Viewport.remove(curView, true);
これが、適切なコードコントローラーであると私が信じているものです。
closeView: function(btn, e,opts){
var curView = btn.getParent().getParent();
console.log('From btn: ' + curView + ',' + opts);
Ext.Viewport.remove(curView, true);}
意見:
Ext.define('SenchaFirstApp.view.DetailView',{
extend: 'Ext.tab.Panel',
requires: ['Ext.Toolbar', 'Ext.tab.Panel', 'Ext.form.FieldSet', 'Ext.field.Select'],
model: ['SenchaFirstApp.model.Details', 'SenchaFirstApp.model.SiteInfo'],
alias: 'widget.detailview',
// xtype: 'tabpanel',
config:
{
scrollable: true,
width: 1500,
height: 800,
// fullscreen: true,
layout: {type: 'card', animation:{type: 'flip'}},
centered: true,
border: 10,
tabBar: {
docked: 'top',
},
formParams: {
},
items:
[
{
//Tab bar
xtype: 'tbar',
title: 'Details View',
items: [
{
xtype: 'closebtn',
id: 'detailsBtn',
sourceForm: this
}]
},
{
title: 'Equipment Monitor', //first tab
xtype: 'monitor',
},
{
title: 'Site Information', //second tab
xtype: 'siteinfo',
}
]
} //End Config
使ってみた
Ext.Viewport.remove(Ext.Viewport.getActiveItem, true)
しかし、それもうまくいきませんでした。おそらく、そのビューを作成した方法に関係していると思われます。私は Sencha を初めて使用するので、間違っていることがたくさんある可能性があるので、助けていただければ幸いです。
タブパネルを閉じた後、ビューが破棄されていないため、更新しないと再度開くことができないことを忘れていました