【发布时间】:2011-06-21 16:31:55
【问题描述】:
我想创建一个模态窗口,它只会掩盖我的应用程序的中心区域。
我怎样才能做到这一点?
在 ExtJs 3 中,我能够使用 windows renderTo 属性并将窗口渲染到中心区域。这样当窗口显示时,只有中心区域被屏蔽。
但是,如果我在 ExtJs 4 中使用 renderTo 属性,则整个 document.body 都会被屏蔽。而在 IE 中,整个窗口也被屏蔽了。
下面是 Ext 示例中的边框布局示例。在中心区域有一个模态窗口。 (显示时整个身体都被遮住了)
Ext.onReady(function() {
var cw;
Ext.create('Ext.Viewport', {
layout: {
type: 'border',
padding: 5
},
defaults: {
split: true
},
items: [{
region: 'north',
collapsible: true,
title: 'North',
split: true,
height: 100,
html: 'north'
},{
region: 'west',
collapsible: true,
title: 'Starts at width 30%',
split: true,
width: '30%',
html: 'west<br>I am floatable'
},{
region: 'center',
layout: 'border',
border: false,
items: [{
region: 'center',
html: 'center center',
title: 'Center',
items: [cw = Ext.create('Ext.Window', {
xtype: 'window',
closable: false,
minimizable: true,
title: 'Constrained Window',
height: 200,
modal: true, //MODAL WINDOW, MASKS THE WHOLE DOCUMENT BODY?
width: 400,
constrain: true,
html: 'I am in a Container',
itemId: 'center-window',
minimize: function() {
this.floatParent.down('button#toggleCw').toggle();
}
})],
dockedItems: [{
xtype: 'toolbar',
dock: 'bottom',
items: ['Text followed by a spacer',
' ', {
itemId: 'toggleCw',
text: 'Constrained Window',
enableToggle: true,
toggleHandler: function() {
cw.setVisible(!cw.isVisible());
}
}]
}]
},{
region: 'south',
height: 100,
split: true,
collapsible: true,
title: 'Splitter above me',
html: 'center south'
}]
},{
region: 'east',
collapsible: true,
floatable: true,
split: true,
width: 200,
title: 'East',
layout: {
type: 'vbox',
padding: 5,
align: 'stretch'
},
items: [{
xtype: 'textfield',
fieldLabel: 'Text field'
}, {
xtype: 'component',
html: 'I am floatable'
}]
},{
region: 'south',
collapsible: true,
split: true,
height: 200,
title: 'South',
layout: {
type: 'border',
padding: 5
},
items: [{
title: 'South Central',
region: 'center',
html: 'South Central'
}, {
title: 'South Eastern',
region: 'east',
flex: 1,
html: 'South Eastern',
split: true,
collapsible: true
}, {
title: 'South Western',
region: 'west',
flex: 1,
html: 'South Western<br>I collapse to nothing',
split: true,
collapsible: true,
collapseMode: 'mini'
}]
}]
});
});
【问题讨论】:
-
恕我直言,问题需要澄清。根据定义,模态不允许您与其“父级”交互。视觉“掩蔽”只是 Ext 的眼睛糖果。所以你是说你想要一个非模态对话框来掩盖父级中的某些区域/组件?还是您仍然说您想要模态但除了某些区域/组件之外不应在视觉上屏蔽父级?
-
@AMOL:我重新表述了我的问题。我想要做的是将一个窗口呈现给一个容器,以便在显示该窗口时只屏蔽父容器?
标签: javascript extjs window modal-dialog extjs4