我想动态添加一个带卡片布局的面板,每次关闭窗口时,我想要Negative number (
"-4",
"-5"
)
Positive number (
1,
2,
3,
6,
9
)
窗口项。
第一次打开窗户时,它没问题。当我重新打开窗口时,我想创建一个新视图,但实际上它会引发destroy
,如下所示,
这是我的窗口视图
error
这是我的窗口项,
Ext.define('MyWebServer.view.qualityassign.CardLayoutWindow', { extend: 'Ext.window.Window', xtype: 'cardlayoutwindow', modal: true, closeAction: 'hide', closable: true, resizable: false, layout: 'fit', reference: 'cardlayoutwindow', controller: 'cardlayoutwindow', viewModel: { data: { initSelectRecordGridStoreDwrParams: [] } }, width: Ext.Element.getViewportWidth() - 50, height: Ext.Element.getViewportHeight() - 64, listeners: { beforeshow: 'onCardLayoutWindowBeforeShow', beforehide: 'onCardLayoutWindowBeforeHide', scope: 'controller' } });
布局
card
这是我的窗口控制器
Ext.define('MyWebServer.view.qualityassign.CardLayoutMain', {
extend: 'Ext.panel.Panel',
xtype: 'cardlayoutmain',
prevBtnText: '« prev',
nextBtnText: 'next »',
layout: {
type: 'card',
align: 'center',
deferredRender: true
},
bodyPadding: 15,
defaults: {
border: false
},
viewModel: {
data: {
copyRecords: [],
extractRecord: {},
planRecord: {},
allocateRecords: []
}
},
controller: 'cardlayoutmain',
reference: 'cardlayoutmain',
initComponent: function() {
var me = this;
me.items = me.createItems();
me.dockedItems = me.createDockedItems();
me.callParent();
},
createItems: function() {
var mainId = this.id;
return [{
itemId: mainId + '-' + 'card-0',
xtype: 'select-record'
}, {
itemId: mainId + '-' + 'card-1',
xtype: 'extract-strategy'
}, {
itemId: mainId + '-' + 'card-2',
xtype: 'selectqualityplan'
}, {
itemId: mainId + '-' + 'card-3',
xtype: 'allocate-strategy'
}, {
id: this.id + '-' + 'card-4',
html: 'Success'
}];
},
createDockedItems: function() {
var me = this;
return [{
xtype: 'toolbar',
dock: 'top',
items: ['->',
{
itemId: 'card-prev',
text: me.prevBtnText,
handler: 'showPrevious',
disabled: true
},
{
itemId: 'card-next',
text: me.nextBtnText,
handler: 'showNext'
}
]
}];
}
});
答案 0 :(得分:1)
如果你想关闭窗口,只需指定
即可销毁它closeAction : 'destroy'
而不是
closeAction : 'hide'
如果这样做,ExtJS会完全摧毁并删除所有项目。另外,如果将destroy
指定为关闭操作,则不需要额外的侦听器(onCardLayoutWindowBeforeHide
)来删除所有项目。如果再次创建窗口,它将从头开始构建(请参阅Sencha Fiddle)。
答案 1 :(得分:0)
我解决了这个问题,因为我分配了一个像这样的rownumberer:
new Ext.grid.RowNumberer({width:40}),
然而,当我用xtype config替换它时,它运行良好。
{xtype:' rownumberer'}
Ext.define('MyWebServer.view.qualityassign.AllocateStrategy',{
extend : 'Ext.panel.Panel',
xtype : 'allocate-strategy',
layout : 'fit',
requires: [
'Ext.grid.column.Action',
'Ext.ProgressBarWidget',
'Ext.slider.Widget'
],
reference : 'allocatestrategypanel',
controller : 'allocatestrategy',
viewModel : {
data : {
}
},
listeners : {
beforerender : 'onAllocateStrategyPanelBeforeRender',
scope : 'controller'
},
header : {
xtype : 'container',
html : '<p>Step 4 of 4 Choose allocate strategy</p>'
},
initComponent : function() {
var me = this;
me.items = this.createItems();
me.callParent();
},
createItems : function() {
var me = this;
return [{
xtype : 'grid',
reference : 'allocatestrategygrid',
frame : true,
viewConfig : {
loadMask: true
},
store : {
type : 'allocate'
},
dockedItems : [{
xtype : 'toolbar',
dock : 'bottom',
items : [{
xtype : 'toolbar',
itemId : 'allocatestrategygrid-topbar',
dock : 'top',
items : [{
xtype : 'combo',
reference : 'selectgroupcombo',
fieldLabel : 'qualityinspectorgrp',
labelWidth : 30,
editable : false,
triggerAction : 'all',
valueField : 'sGroupGuid',
displayField : 'sGroupName',
forceSelection : true,
store : {
type : 'selectgroup'
},
listeners : {
select : 'onSelectGroupComboSelect',
scope : 'controller'
}
}]
}],
columns : {
xtype : 'gridcolumn',
defaults: {
align : 'center',
width : 100,
menuDisabled: true
},
items : [
**new Ext.grid.RowNumberer({width: 40}),**
{
text : 'agentId',
dataIndex : 'qualInspId'
},
{
text : 'agentName',
dataIndex : 'qualInspName'
},
{
text : 'percent',
xtype : 'widgetcolumn',
width : 120,
widget : {
bind : '{record.percent}',
xtype : 'progressbarwidget',
textTpl: [
'{percent:number("0")}%'
]
}
},
{
text : '',
xtype : 'widgetcolumn',
width : 120,
widget : {
xtype : 'numberfield',
editable : false,
bind : '{record.percent}',
maxValue : 0.99,
minValue : 0,
step : 0.01,
maxLength : 4,
minLength : 1,
autoFitErrors: false
}
},
{
text : '',
xtype : 'widgetcolumn',
width : 120,
flex : 1,
widget : {
xtype : 'sliderwidget',
minValue : 0,
maxValue : 1,
bind : '{record.percent}',
publishOnComplete : false,
decimalPrecision : 2
}
}
]
}
}];
}