亲爱的SAP Fiori开发人员,
如何在JavaScript类中获取App命名空间?我的意思是它似乎在index.html的data-sap-ui-resourceroots
里面我们静态地定义了命名空间。如何在Javascript控制器类中访问此命名空间?
提前致谢。
答案 0 :(得分:2)
您可以将命名空间定义为常量值,并在component.js中使用此常量:
var __NAMESPACE = "sap.ui.demo.toolpageapp.";
…
return UIComponent.extend(__NAMESPACE + "Component", {
这种替换可以在javascript编码和javascript视图中使用。 它不适用于xml文件和清单文件。 另外,建议使用xml-views。
另一种选择是使用编辑器,您可以在其中同时搜索和替换应用的所有文件。
答案 1 :(得分:1)
Fiori app没有使用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];
}
答案 2 :(得分:0)
您可以访问window["sap-ui-config"]
resourceroots的对象。请参阅Configuration of the OpenUI5 Runtime
答案 3 :(得分:0)
您可以按照建议在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();
}
...