Nav*_*een 1 javascript dojo xpages
在我的XPage中,我addOnLoad在脚本块中编写了一个.但问题是,即使在我不想要的部分刷新期间它也会发射.例如,如果我在数据表上有一个寻呼机控件,那么点击页面就会激活该addOnLoad功能.这发生在dojo.addOnLoad和XSP.addOnLoad.
dojo.addOnLoad(function() {
console.log("addOnLoad");
});
Run Code Online (Sandbox Code Playgroud)
每次进行部分刷新时,这将打印"addOnLoad".我甚至试图以这种方式修改代码,但没有运气.
var addOnLoadFired = false;
dojo.addOnLoad(function() {
if (addOnLoadFired) {
return;
}
addOnLoadFired = true;
console.log("addOnLoad");
});
Run Code Online (Sandbox Code Playgroud)
如何避免这种情况?
在不指定刷新ID的情况下进行部分刷新时,将刷新整个XPage.如果刷新UIViewRoot元素也会发生相同的情况.在这两种情况下,这都包括输出scriptblock,这就是为什么你的addOnLoad事件被反复触发的原因.
寻呼机自动刷新其父组件.如果您的Pager刚刚添加到XPage中,它将始终刷新UIViewRoot.
要解决您的问题,您可以将dataTable和寻呼机嵌入xp:div元素中.另一个想法是,如果执行部分刷新,则检查输出脚本块的呈现属性.
编辑: 以编程方式检查部分刷新(SSJS):
var ajax = new com.ibm.xsp.ajax.AjaxUtil();
if( ajax.isAjaxPartialRefresh(facesContext) == true){
return "AJAX";
}else{
return "NOT AJAX!"
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
829 次 |
| 最近记录: |