如何从p:对话头属性引用javascript变量

How to refer to javascript variable from p:dialog header attribute

本文关键字:属性 引用 javascript 变量 对话      更新时间:2023-09-26

我有一个变量header_title在java脚本

<script type="text/javascript">
var dialog_label; 
function update_dialog_label(arg){  
   dialog_label = arg;  
}</script>

现在,我想这样使用dialog_open

<p:dialog widgetVar="nodeDetail" width="520" header="{dialog_label}">

如何使用dialog_label设置标题?

谢谢。

如果您更喜欢使用javascript var而不是bean属性:

jsf代码:

<p:dialog id="infoDialog" widgetVar="infoDialog" header="Local title" width="400">
    something
</p:dialog>
<input type="button" value="showDialog" onclick="showDialog()"></input>

代码:

<script type="text/javascript">
var globalTitle = "Global title";
function showDialog(){  
    var header = $("#infoDialog".concat("_title"));
    header.text(globalTitle);
    infoDialog.show();
}
</script>

代码B:

<script type="text/javascript">
var globalTitle = "Global title";
function showDialog(){  
    var header = document.getElementById("infoDialog".concat("_title"));
    header.innerHTML = globalTitle;
    infoDialog.show();
}
</script>

和原始标题被忽略…

我不相信您可以像您所展示的那样在JavaScript中将属性绑定到变量。但是,如果p:dialog元素像其他HTML元素一样,您可以通过在每次对话框标签更新时直接从JavaScript设置标题来实现您想要的效果。首先,给你的对话框一个ID:

<p:dialog id='dialog' widgetVar="nodeDetail" width="520" header="{dialog_label}">

现在,在函数update_dialog_label(arg)中,在最末尾添加以下行:

nodeDetail.header = dialog_label;

现在,每次调用update函数时,对话框头将被更新。希望对你有帮助。

编辑:我不熟悉PrimeFaces,但我在谷歌上搜索了这个,它可能会走上正确的道路:http://forum.primefaces.org/viewtopic.php?f=3& t = 14538

通过在浏览器中检查生成的代码,我成功地用以下javascript修改了<p:dialog>的标题:

$('span#infoDialog_title.ui-dialog-title').html(globalTitle);

和显示对话框:

PF('infoDialog').show();

希望这对你有帮助!