如何在控制器中获取 SAPUI5 命名空间?
How to get SAPUI5 namespace in controller?
尊敬的 SAP Fiori 开发人员,
如何获取JavaScript类中的App命名空间?我的意思是,似乎在 data-sap-ui-resourceroots
内部的 index.html 中,我们静态定义了命名空间。如何在 Javascript 控制器 类 中访问此命名空间?
提前致谢。
您可以访问window["sap-ui-config"]
resourceroots 的对象。请参阅 Configuration of the OpenUI5 Runtime
处的文档
您可以按照您的建议在 index.html 中定义您的资源根:
<script src="https://sapui5.netweaver.ondemand.com/1.38.12/resources/sap-ui-core.js"
id="sap-ui-bootstrap"
data-sap-ui-libs="sap.m"
data-sap-ui-theme="sap_belize"
data-sap-ui-compatVersion="edge"
data-sap-ui-preload="async"
data-sap-ui-resourceroots='{
"fiori": "./",
"abc": "../abc_web/lib/",
"def": "../def_web/"
}'
>
</script>
假设您需要在控制器(称为 App.controller.js)中使用来自 mathLib.js(位于 /abc_web/lib/mathLib.js 中)的某些函数。您可以通过以下方式访问它:
sap.ui.define([
"sap/ui/core/mvc/Controller",
"abc/mathLib",
], function(Controller, CallItAsYouWant) {
"use strict";
return Controller.extend("fiori.controller.App", {
onInit: function () {
...your code
CallItAsYouWant.someFunction();
}
...
您可以将命名空间定义为常量值并在 component.js 中使用该常量:
var __NAMESPACE = "sap.ui.demo.toolpageapp.";
…
return UIComponent.extend(__NAMESPACE + "Component", {
这种替换适用于 javascript 编码和 javascript 视图。
它不适用于 xml 文件和清单文件。
还推荐 xml- 观看次数。
另一种选择是使用编辑器,您可以在其中同时搜索和替换应用的所有文件。
Fiori 应用程序没有使用 index.html
作为入口文件,它直接访问 Component.js。所以我的想法是从 manifest.json 获取命名空间。我选择了 rootView
描述符。
//any.controller.js
_getNamespace: function() {
//namespace.App
var oViewName = this.getOwnerComponent().getMetadata().getRootView().viewName;
return oViewName.split(".")[0];
}
尊敬的 SAP Fiori 开发人员,
如何获取JavaScript类中的App命名空间?我的意思是,似乎在 data-sap-ui-resourceroots
内部的 index.html 中,我们静态定义了命名空间。如何在 Javascript 控制器 类 中访问此命名空间?
提前致谢。
您可以访问window["sap-ui-config"]
resourceroots 的对象。请参阅 Configuration of the OpenUI5 Runtime
您可以按照您的建议在 index.html 中定义您的资源根:
<script src="https://sapui5.netweaver.ondemand.com/1.38.12/resources/sap-ui-core.js"
id="sap-ui-bootstrap"
data-sap-ui-libs="sap.m"
data-sap-ui-theme="sap_belize"
data-sap-ui-compatVersion="edge"
data-sap-ui-preload="async"
data-sap-ui-resourceroots='{
"fiori": "./",
"abc": "../abc_web/lib/",
"def": "../def_web/"
}'
>
</script>
假设您需要在控制器(称为 App.controller.js)中使用来自 mathLib.js(位于 /abc_web/lib/mathLib.js 中)的某些函数。您可以通过以下方式访问它:
sap.ui.define([
"sap/ui/core/mvc/Controller",
"abc/mathLib",
], function(Controller, CallItAsYouWant) {
"use strict";
return Controller.extend("fiori.controller.App", {
onInit: function () {
...your code
CallItAsYouWant.someFunction();
}
...
您可以将命名空间定义为常量值并在 component.js 中使用该常量:
var __NAMESPACE = "sap.ui.demo.toolpageapp.";
…
return UIComponent.extend(__NAMESPACE + "Component", {
这种替换适用于 javascript 编码和 javascript 视图。 它不适用于 xml 文件和清单文件。 还推荐 xml- 观看次数。
另一种选择是使用编辑器,您可以在其中同时搜索和替换应用的所有文件。
Fiori 应用程序没有使用 index.html
作为入口文件,它直接访问 Component.js。所以我的想法是从 manifest.json 获取命名空间。我选择了 rootView
描述符。
//any.controller.js
_getNamespace: function() {
//namespace.App
var oViewName = this.getOwnerComponent().getMetadata().getRootView().viewName;
return oViewName.split(".")[0];
}