如何在控制器中获取SAPUI5命名空间?

时间:2016-12-04 10:48:32

标签: sapui5 sap-fiori

亲爱的SAP Fiori开发人员,

如何在JavaScript类中获取App命名空间?我的意思是它似乎在index.html的data-sap-ui-resourceroots里面我们静态地定义了命名空间。如何在Javascript控制器类中访问此命名空间?

提前致谢。

4 个答案:

答案 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();                     
              }
              ...