在 onClientLoad 事件中从 NotesDocument 加载 JavaScript

loading JavaScript from NotesDocument in onClientLoad event

我想在 Notes 文档中加载 dataTables 插件的初始化脚本。在此文档中,我存储了更多数据,例如对象类型、数据源位置、显示配置。现在我也想存储脚本来初始化数据表插件。

我可以将值存储在 viewScope 中,它是在 XPage 的 beforePageLoad 事件中设置的。

viewScope的内容可以如下:

$(document).ready(function() { var table = $('#tablePager').DataTable({ "order": [ [1, "asc"] ], responsive: true, paging: false, /*stateSave: true,*/ colReorder: { reorderCallback: function() { console.log('callback'); } }, dom: 'Bfrtip', buttons: [ 'excelHtml5', 'print' ] }); //$('#tablePager_filter input').val('');});

当我尝试评估 onClientLoad 事件中的值时出现错误:

<xp:eventHandler event="onClientLoad" submit="false">
        <xp:this.script><![CDATA[eval('#{javascript:viewScope.dataTable}')
]]></xp:this.script>

未捕获的语法错误:无效或意外的标记

有人建议如何将字符串转换为函数吗?

为什么要将客户端 JS 放在服务器端 viewScope 变量中?您可以使用 xp:scriptBlock 控件代替