将PrimeFaces对话框更改为客户端模式



我有一个素数面对话框,如下所示:

<p:dialog widgetVar="dlg" width="320" height="220" modal="false" closable="false" showHeader="false" resizable="false" position="right,top">

如果我点击页面中的某个元素,我想将此对话框更改为模态对话框。是否有用于此的客户端API?

尝试

onclick="dlg.setModal(true);"

没有成功。方法setModal()不存在。是否可以在不往返服务器的情况下以这种方式更改对话框?

您有这个(模态)的属性,现在它为false,设置它为madal="true"

您是否将Firefox与Firebug一起使用,或者使用其他可以向您显示DOM元素dlg的浏览器/web开发工具?

在那里你可以发现dlg有方法show()hide(),以及enableModality()disableModality()。这些(几乎)是你想要的。

不幸的是,enable...disable没有(正如人们可能认为的那样)设置一个选项,使对话框在显示时成为模态对话框。相反,它们显示或隐藏"blackout"div。因此,当您想要动态模式对话框时,不要通过Javascript调用dlg.show(),而是调用dlg.enableModality(); dlg.show(),反之亦然。

编辑:

还有属性dlg.cfg,它包含一些设置。看起来,如果您简单地设置dlg.cfg.modal=true(无论该设置当时是否存在),那么下次显示dlg时,它是模态的(但是,与在xhtml中设置它不同,它仍然是可拖动和可调整大小的)。

相关内容

最新更新