0

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

4

3 回答 3

3
Ext.WindowManager.bringToFront(window);

应该可以,这是一个演示

于 2013-05-16T14:33:52.613 回答
2

您需要推迟打开新模式。这是 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
于 2013-11-29T08:56:13.293 回答
0

给他们不同的 id/class 并在 CSS 上给他们不同的 zindex。应该管用。

于 2013-05-18T17:25:10.373 回答