我有一个 ssjs 函数,仅在独立的 XPage 自定义控件中调用几次。
有没有办法将此函数保留在 XPage/CustomControl 本身中并直接调用它,而不将其存储在单独的 javascript 库中?
我赞同乔治所说的。将函数放入库中,但仅将其作为资源包含在将执行调用的自定义控件/xpage 上,因此不会将其加载到不需要的其他页面/控件上
在我看来这是不可能的,因为您没有“全局范围”,因此您无法从 xpage/自定义控件中的不同事件引用您的函数。你必须把这个 SSJS 函数放入库中!
这就是服务器端 JavaScript 在 XPage(或自定义控件)中随处可用的方式,而无需将其放置在脚本库中:
就在
<xp:view>
下:
<xp:this.resources>
<xp:script clientSide="false">
<xp:this.contents>
<![CDATA[${javascript:
var testA = "123";
function testB(){
return "123";
}
return true;
}]]>
</xp:this.contents>
</xp:script>
</xp:this.resources>
备注:
return true
结尾,否则服务器解析 js 代码时会产生错误。<xp:view>
资源按照它们在 XML 源中列出的顺序加载。如果您的代码依赖于其他代码,请确保正确排序。2017 年之前的回答:
添加一个 ComputedField(例如将其命名为“
local_ssjs
”)并让它生成所需的共享 js 代码作为字符串值。
例如:
"function returnFour(){retrun (4)};"
如果您遇到这种情况,请获取共享代码并使用
eval()
函数来 include 它。
var sharedCode = getComponent("local_ssjs").getValue(); eval(sharedCode); var xFour = returnFour();
即使计算字段仅包含函数定义,也可以正常工作。