我定义了一个类似 http://jsfiddle.net/KABQD/ 的窗口
这是我的窗口
Ext.define('MyWindow', {
extend: 'Ext.window.Window',
title: 'window',
width:200,
height:100,
modal:true,
closable:false,
tbar: [{
text:'hide',
handler:function(){
this.up('window').hide();
}
}]
});
还有一个按钮。如果单击按钮,我的窗口将首次创建并显示。如果再次单击按钮,则会显示窗口。但是当我使用Messagebox时失败了。
如何解决这个问题
这是我的按钮
Ext.create('Ext.Button', {
text: 'Click me',
visible: false,
renderTo: Ext.getBody(),
handler: function() {
var x = 0;
Ext.WindowManager.each(function(win) {
x = 1;
win.show();
});
if (x == 0){
// if don't use MessageBox then will working
Ext.MessageBox.show({
msg: 'wait...',
progressText: 'Loading...',
width:300,
wait:true,
waitConfig: {interval:200}
});
//Ext.Ajax.request({
//url : 'example.php'
//,success: function(response, opts) {
var a = new MyWindow();
a.show();
Ext.MessageBox.hide();
//}
//});
}
}
});
答案 0 :(得分:0)
问题是WindowManager
无法看到您的对象。您应该使用id来实例化MyWindow对象,例如new MyWindow({id: 'NewWindow'});
然后您可以在WindowManager
中捕获您的对象并调用show()
方法。
工作示例: http://jsfiddle.net/A92yN/3/
完整代码:
Ext.define('MyWindow', {
extend: 'Ext.window.Window',
title: 'window',
width:200,
height:100,
modal:true,
closable:false,
tbar: [{
text:'hide',
handler:function(){
this.up('window').hide();
}
}]
});
Ext.onReady(function () {
Ext.create('Ext.Button', {
text: 'Click me',
visible: false,
renderTo: Ext.getBody(),
handler: function() {
var x = 0;
Ext.WindowManager.each(function(win) {
x = 1;
var win = Ext.getCmp('NewWindow');
win.show();
});
if (x == 0){
// if don't use MessageBox then will working
Ext.MessageBox.show({
msg: 'wait...',
progressText: 'Loading...',
width:300,
wait:true,
waitConfig: {interval:200}
});
//Ext.Ajax.request({
//url : 'example.php'
//,success: function(response, opts) {
var a = new MyWindow({id: 'NewWindow'});
a.show();
Ext.MessageBox.hide();
//}
//});
}
}
});
});