Extjs 对于Ext Js 4的模式窗口,z索引不起作用

Extjs 对于Ext Js 4的模式窗口,z索引不起作用,extjs,modal-dialog,Extjs,Modal Dialog,我必须在第二个模态窗口上打开一个模态窗口。在显示第二个窗口后,两个窗口都在争取领先。 我已经尝试过bringToFront()方法,但它不起作用。 任何人都有解决这个问题的办法 Ext.WindowManager.bringToFront(window); 应该工作 应该工作 给他们不同的id/类,并在CSS上给他们不同的zindex。应该有效。给他们不同的id/类,并在CSS上给他们不同的zindex。应该有效。您需要推迟打开新模式。这是ExtJS中的一个常见问题,它们的大多数自动DOM操作

我必须在第二个模态窗口上打开一个模态窗口。在显示第二个窗口后,两个窗口都在争取领先。 我已经尝试过bringToFront()方法,但它不起作用。 任何人都有解决这个问题的办法

Ext.WindowManager.bringToFront(window);
应该工作


应该工作

给他们不同的id/类,并在CSS上给他们不同的zindex。应该有效。

给他们不同的id/类,并在CSS上给他们不同的zindex。应该有效。

您需要推迟打开新模式。这是ExtJS中的一个常见问题,它们的大多数自动DOM操作都是在组件上进行的。例如,如果您尝试在表单对象创建后立即为其设置值,您可能会注意到它不起作用(至少对我来说不起作用)。在尝试了ExtJS库中所有可能的方法之后,我花了几个令人沮丧的小时想出了这个解决方案(也是迄今为止唯一对我有效的解决方案)。我仍然不知道为什么会发生这样的事情,为什么推迟会起到作用(任何关于这一点的启示都将受到高度赞赏)

话虽如此,实现这一点的方法很简单,只需将代码包装在匿名函数中,并使用超时调用它(大约10毫秒就可以了)。您甚至可以使用
Ext.Function.defer
,它提供了一些附加选项,如更改函数范围、向函数传递附加参数等。您可以在您认为理想情况下可以工作但不工作的任何代码上尝试这种方法(如设置组件值、显示、隐藏等)


您需要推迟打开新模式。这是ExtJS中的一个常见问题,它们的大多数自动DOM操作都是在组件上进行的。例如,如果您尝试在表单对象创建后立即为其设置值,您可能会注意到它不起作用(至少对我来说不起作用)。在尝试了ExtJS库中所有可能的方法之后,我花了几个令人沮丧的小时想出了这个解决方案(也是迄今为止唯一对我有效的解决方案)。我仍然不知道为什么会发生这样的事情,为什么推迟会起到作用(任何关于这一点的启示都将受到高度赞赏)

话虽如此,实现这一点的方法很简单,只需将代码包装在匿名函数中,并使用超时调用它(大约10毫秒就可以了)。您甚至可以使用
Ext.Function.defer
,它提供了一些附加选项,如更改函数范围、向函数传递附加参数等。您可以在您认为理想情况下可以工作但不工作的任何代码上尝试这种方法(如设置组件值、显示、隐藏等)

setTimeout(function(){
  // your code to render the modal or other ExtJS components
  ...
}, 10);

// or do it the ExtJS way

Ext.Function.defer(function(){
  ...
}, 1); // giving 1ms works in most cases