更新对话框而不立即关闭它
Update a dialog without closing it immediately?
我目前正试图通过Javascript打开一个对话框,并在显示对话框之前更新其元素。
触发器来自primefaces推送,所以我尝试通过JavaScript来处理它。
基本上流程是这样的:
<p:socket onMessage="onStart" channel="/votingStartChannel" />
套接字触发以下JavaScript:
function onStart(data)
{
votingDialogRefresh();
PF('votingDialogWindow').show();
}
请注意,我的对话框名为votingDialogWindow
。
另一个功能votingDialogRefresh();
触发以下内容:
<h:form>
<p:remoteCommand name="votingDialogRefresh" update="votingDialogWindow" />
</h:form>
哪个"应该"在显示对话框之前更新对话框。
但是,一旦启动流,对话框就会立即打开和关闭。我可以看到它像3秒钟。此外,据我所见,在这个微小的时间跨度内,还没有任何更新,因为所有字段仍然没有填充预期值。
我在这里做错了什么?
您的技术问题是由<p:remoteCommand>
执行"fire-and-forget"异步(ajax)请求引起的。基本上,在发送ajax请求后,votingDialogRefresh()
函数调用立即返回并前进到显示对话框的PF('votingDialogWindow').show()
。但是当<p:remoteCommand>
的ajax响应稍后返回时,它将更新整个对话框。显然,对话框的默认状态是"关闭"。因此,它将在视觉上立即关闭。默认状态由visible
属性控制;如果你使用了visible="#{facesContext.postback}"
,它会显示为打开的,这只会对用户体验不利,因为最终用户会看到对话框的内容在打开后不久就被更新/更改,这很令人困惑。
您应该在ajax请求完成并更新对话框时打开对话框,而不是在激发ajax请求之前,也不是在更新对话框之前。您只需将调用移动到<p:remoteCommand>
的oncomplete
即可实现这一点。
function onStart(data) {
votingDialogRefresh();
}
<h:form>
<p:remoteCommand name="votingDialogRefresh" update="votingDialogWindow"
oncomplete="PF('votingDialogWindow').show()" />
</h:form>
- 着色引导框对话框
- 文本框不是从Javascript/Asp.net中的对话框中打印出来的
- CKeditor:更改对话框中的默认选择选项
- JQuery UI 对话框在第二次单击时不会更新
- 更新对话框而不立即关闭它
- 我的输入值'对话框窗体上的s;t更新
- 在角度材料对话框数据输入/推送后更新ng-repeat
- 使用 jQuery 更新对话框标题
- 使用数据表行信息更新文本输入,并从对话框中编辑行
- Angularjs没有使用alertify或对话框插件进行更新
- 显示页面并使用弹出对话框编辑/更新页面
- 可以't更新复制到对话框中的Dijit Widget
- 更新:jquery对话框模式单选按钮未选择ajax
- 引导模式对话框文本字段在我以编程方式更改值后不会更新,直到用户在该字段中键入
- jQuery对话框未触发,页面上有更新面板
- 对话框中的变量值没有更新
- jquery对话框内的更新面板不工作
- Jquery对话框提示更新
- 对话框窗口是如何在angularjs中更新主表的
- 更新对话框中的按钮后,对话框未关闭