不可访问包含的标题功能包含的外部JS lib



我在加载UI5页面后尝试测试Incluctercript函数以加载外部JS库。它在脚本加载后的所有情况下都可以使用,可以访问。但是,如果具有ChartContainer控制,则无法访问加载的JS库。

  • 工作案例,选择地图容器控制的样品页面:https://sapui5.hana.ondemand.com/#/tity/sap.ui.mapcontainer/sample/sample/sampam/samp.ui.vk.sample.mapcontainer.mapcontainerbasic,加载页面后,打开开发人员工具,在控制台面板中运行下面的脚本。
 
var includeScript = sap.ui.require("sap/ui/dom/includeScript");
try {
  dateFns.isToday(new Date());
} catch (err) {
  new Promise(function(fnResolve, fnReject) {
    includeScript(
          "https://cdnjs.cloudflare.com/ajax/libs/date-fns/1.30.1/date_fns.min.js", 
          "datefns_js", fnResolve, fnReject);
	}).then(function() {
     console.log("datefns_js is loaded!!!")
     console.log(dateFns.isToday(new Date()));
	});
}
<script src="https://sapui5.hana.ondemand.com/resources/sap-ui-core.js"></script>

加载日期后,执行下一个命令:

datefns.istoday(new Date(((; 

自dateFNS JS加载并可以访问以来,它在控制台中返回真实。

  • 无动物,特别是在测试ChartContainer控件时,在新会话中打开图表容器控制的打开示例页面:https://sapui5.hana.ondemand.com/#/entity/sap.sap.suite.suite.ui.commons.chartcontainer/sample/sap.suite.ui.commons.sample.chartcontainersimpletoolbar打开开发人员工具,并重复与上述相同的步骤。由于库是加载但无法访问的,因此错误发生为"未定义的参考文献:未定义dateFNS"。

我希望加载的外部JS库应在我的UI中具有任何控件。

来自sapui5文档:

使用统一模块定义(UMD(语法的模块可以加载,但是只有在没有AMD加载器存在或将其导出也将其导出到全局名称空间时,即使存在AMD加载程序

不幸的是,SAPUI5图表使用另一个AMD加载程序(RequireJS(,因此您的模块date-fns将使用requirej加载,并且无法用于全局window对象。

要解决此问题,您可以强制将模块始终加载到requirejs上,然后通过require方法可用:

<script src="https://sapui5.hana.ondemand.com/resources/sap-ui-core.js"></script>
<script>
var declareLibs = new Promise(function (resolve, reject) {
    sap.ui.require(["sap/ui/thirdparty/require"], function () {
        requirejs.config({
            paths: {
                "date_fns": ["//cdnjs.cloudflare.com/ajax/libs/date-fns/1.30.1/date_fns.min"]
            }
        });
        resolve();
    });
});
declareLibs.then(require(["date_fns"], function (dateFns) {
    console.log("datefns_js is loaded!")
    console.log(dateFns.isToday(new Date()));
}));
</script>

最新更新