Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Extjs 如何在Ext4中创建完整的模式窗口?_Extjs_Modal Dialog_Extjs4 - Fatal编程技术网

Extjs 如何在Ext4中创建完整的模式窗口?

Extjs 如何在Ext4中创建完整的模式窗口?,extjs,modal-dialog,extjs4,Extjs,Modal Dialog,Extjs4,就像微软操作系统(xp、vista、7等)中的一个窗口 如果主窗口创建模式窗口,则用户无法访问主窗口, (包括关闭和访问工具栏等) 我想用extjs做一个类似的。这是我的模态示例: Ext.create(“Ext.Window”{ 标题:"aa",, 宽度:200, 身高:150, html:'a', 待定:[{ 正文:“aa”, 处理程序:函数(){ Ext.create(“Ext.Window”{ 标题:"aa",, 宽度:150, 可关闭:错误, 身高:100, html:'b', 所有者

就像微软操作系统(xp、vista、7等)中的一个窗口

如果主窗口创建模式窗口,则用户无法访问主窗口,
(包括关闭和访问工具栏等)

我想用extjs做一个类似的。这是我的模态示例:

Ext.create(“Ext.Window”{
标题:"aa",,
宽度:200,
身高:150,
html:'a',
待定:[{
正文:“aa”,
处理程序:函数(){
Ext.create(“Ext.Window”{
标题:"aa",,
宽度:150,
可关闭:错误,
身高:100,
html:'b',
所有者:这个,
莫代尔:对
}).show();
}
}]
}).show();
问题是,它只是禁用了主窗口的主体,用户仍然可以访问主工具栏,也可以关闭它

我的问题是如何制作完整的模态?或者,如果无法完成,如何禁用主窗口,如果出现模式窗口,我已经在模式win上使用listener show,但问题是我无法从该侦听器访问主窗口

编辑:

这是我目前的代码:

Ext.create(“Ext.Window”{
标题:"aa",,
宽度:200,
身高:150,
html:'a',
马斯康:错,
待定:[{
正文:“aa”,
处理程序:函数(a){
var父项=a.up(“窗口”);
parent.disable();
Ext.create(“Ext.Window”{
标题:"aa",,
宽度:150,
身高:100,
html:'b',
听众:{
范围:本,,
“关闭”:函数(){
parent.enable();
},
/*
“模糊”:函数(){
这个.focus()
}
*/
}
}).show();
}
}]
}).show();
虽然这不是模态概念,但看起来像我现在想要的,我有一个新问题,
maskOnDisable
不起作用,我需要一个类似
blur
的事件,所以如果用户单击父窗口,它会聚焦回弹出窗口。 (我应该把它作为新问题发布吗?

新答案:

您是否尝试过适当地
禁用()
启用()
父窗口?我认为这将有助于您停止访问第一个窗口,同时允许您的用户访问主应用程序菜单和屏幕。以下是我尝试过的:

var x = Ext.create("Ext.Window",{
    title : 'aa',
    width : 200,
    height: 150,
    html : 'a',
    tbar : [{
        text : 'aa' ,
        handler :function(){
            // I disable the parent window.
            x.disable();

            Ext.create("Ext.Window",{                   
                title : 'aa',
                width : 150,
                closable : false,
                height: 100,
                html : 'b'
                // You will need to enable the parent window in close handler of this window.

            }).show();
        }
    }]
}).show();
禁用窗口时,窗口中的组件将被禁用,您甚至无法移动窗口。但同时,您将可以访问其他组件,如主菜单和页面上的网格。您还可以访问新窗口。现在,要使其行为类似于模态,需要在关闭子窗口时启用父窗口。您可以使用
enable()
方法来实现这一点

我想不出任何其他方法来实现你所寻求的目标


旧答案:

我想知道你为什么要设置指向窗口本身的
ownerCt
属性!这是你的主要问题。通过删除该属性,您将实现所需的功能。以下是更新的代码:

Ext.create("Ext.Window",{
    title : 'Extra window!',
    width : 150,                            
    height: 100,
    closable : false,                           
    html : 'A window that is a modal!',                         
    modal : true
}).show();

设置
ownerCt
属性有什么原因吗?

现在您设置了model:true

Ext.define('myApp.view.MyModalWindow', {
extend: 'Ext.window.Window',
...
modal: true,
...

不不是那样的,。。我的问题不清楚吗???我有一个主窗口。。然后用户单击工具栏按钮。。它会弹出一个新窗口。。我希望用户无法访问主窗口。。所以我需要
ownerCt
来指定谁是家长。。就像“资源管理器”(窗口)中的“文件夹选项”,在关闭文件夹选项之前,用户无法访问资源管理器。请查看更新的答案。@Abdel,谢谢您的帮助。。见我的编辑。。我再次需要一些帮助..是的,模态配置属性是一种方式:)Docu: