默认情况下,JSF ajax(JS)事件排队,以便按顺序执行。有没有办法挂钩到该框架?
我想要做的是让我的JS事件也使用这个队列。我可以使用全局变量吗?
答案 0 :(得分:1)
没有,但您可以通过<f:ajax onevent>
和jsf.ajax.addOnEvent
在JSF ajax请求上挂钩事件监听器。然后,您可以在发送ajax请求之前,或者在到达ajax响应之后,和/或在更新HTML DOM之后执行一些JS代码。根据具体的功能要求,可能实际您正在寻找的东西。
以下是这样的事件监听器函数的样子:
function someAjaxEventListener(data) {
var status = data.status;
switch(status) {
case "begin":
// This is invoked right before ajax request is sent.
break;
case "complete":
// This is invoked right after ajax response is arrived.
break;
case "success":
// This is invoked right after HTML DOM is updated.
break;
}
}
以下是按照<f:ajax>
进行注册的方法:
<f:ajax ... onevent="someAjaxEventListener" />
以下是如何在视图范围内注册它(因此,挂钩每个<f:ajax>
):
<h:outputScript>jsf.ajax.addOnEvent(someAjaxEventListener);</h:outputScript>
(最好将它放在一些由<h:outputScript name>
加载的JS文件中)