我希望关闭按钮可以重复使用,所以我创建了自己的类,以便将其附加到需要它的视图中。我希望能够将附加到视图的视图传递给控制器以关闭该视图。它应该是相当简单的,我会怀疑这是多少,但我不能让它正常工作。我得到它关闭视图但得到错误 未捕获的TypeError:无法读取null的属性'dom' 我理解这通常意味着视图没有被破坏,但我认为这告诉它破坏视图:
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的新手,所以我可能会做很多错事,所以我很感激你的帮助。
我忘了提到,在关闭标签面板后,我无法再次打开它而不再刷新,我确信这是因为视图没有被破坏
答案 0 :(得分:0)
看来问题是使用了id。我以为我把它们拿出来但我猜不是。我拿出了id并使用了别名并使其正常工作。我仍然没有弄清楚如何传递附加到按钮的视图,但现在
Ext.Viewport.remove(Ext.Viewport.getActiveItem, true)
正在运作。 true属性告诉它在删除视图后销毁视图。