我使用<xpScriptBlock>
来存储加载ExtJS网格的两个相当长的客户端函数的内容。我可以使用clientide javascript调用该函数。
我发现我需要根据下划线文档中的条件显示不同的网格。为了引用后端,我将代码移到了服务器端,然后尝试使用view.postScript调用网格。这不起作用,是我的问题的基础。
这种方法是否可行?我不希望将所有代码都放入事件中。这些函数很长,最好保存在脚本块中,以提高可读性和可维护性。这些函数肯定是在客户端加载的,因为我可以使用firebug控制台手动加载它们。也许我错过了一些简单的东西,所以在改变方法之前我想问一下。
var typePO = document1.getItemValueString("typePO");
if(typePO == "AFS"){
view.postScript("loadGridAFS();")
} else {
view.postScript("loadGridOther();")
}
此代码位于面板的serverside onClientLoad事件中。我尝试添加'return'关键字,它没有任何区别。
更新:我甚至无法使用view.postscript()获得简单的警报。此方法仅适用于SSJS中的某些类型的事件吗?
答案 0 :(得分:1)
在使用简单警报进行一些实验后,我可以说view.postScript()无处不在。
对于测试,我将相同的代码放在xpage的六个事件中。以下是我使用的代码示例:view.postScript(“alert('onClientLoad');”);我刚刚更改了消息以匹配事件。
结果如下:
我没有尝试过所有可用的事件,但这里的底线是你不应指望view.postscript()到处工作。如果它什么都不做,请首先尝试一个简单的警报,看看事件是否支持view.postscript,然后再询问您试图运行的客户端javascript代码。