SAPUI5使用XML-File作为View with" data-sap-ui-resourceroots"?

时间:2016-03-01 11:21:14

标签: xml eclipse view sapui5

我正在进行SAPUI5演练并坚持第4步。(Walkthrough Step 4)

我正在使用Eclipse并且不知道如何更改此代码行,因此它适用于我的项目并且将找到我的视图。

         data-sap-ui-resourceroots='{
        "sap.ui.demo.wt": "./"
     }' 

我需要知道要插入什么" sap.ui.demo.wt"使用Eclipse项目时。

感谢任何提示:)

编辑:

现在我有了一个带有按钮的工作页面,触发弹出窗口。

文件夹结构:

SAPUI5_Test
 - WebContent
    - controller
       -> NewView.controller.js
    - view
       -> NewView.view.xml
    - index.html

的index.html:

    <!DOCTYPE html>
<html>
<head>
    <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
    <meta charset="UTF-8">
    <title>SAPUI5 Walkthrough</title>
    <script
        id="sap-ui-bootstrap"
        src="https://openui5.hana.ondemand.com/resources/sap-ui-core.js"
        data-sap-ui-theme="sap_bluecrystal"
        data-sap-ui-libs="sap.m"
        data-sap-ui-compatVersion="edge"
        data-sap-ui-preload="async"
        data-sap-ui-resourceroots='{
            "SAPUI5_Test": "./"
        }'>
    </script>
    <script>
        sap.ui.getCore().attachInit(function () {
            sap.ui.xmlview({
                viewName: "SAPUI5_Test.view.NewView"
            }).placeAt("content");
        });
    </script>
</head>
<body class="sapUiBody" id="content">
</body>
</html>

NewView.view.xml:

<mvc:View
controllerName="SAPUI5_Test.controller.NewView"
xmlns="sap.m"
xmlns:mvc="sap.ui.core.mvc">
<Button 
text="Say hello"
press="onShowHello"/>
</mvc:View>

NewView.controller.js

sap.ui.controller("SAPUI5_Test.controller.NewView", {
    onShowHello : function() {
        alert("Hello SAPUI5_Controller");
    }
});

非常感谢你的帮助!也许这可以帮助将来的某个人:)

2 个答案:

答案 0 :(得分:5)

SAPUI5正在以全名搜索视图,控制器或其他类等资源。

假设每个命名空间部分都是一个文件夹,而类/视图名称是文件名。如果是视图,则文件名必须是xxx.view.xml。如果它是一个控制器,文件名必须是xxx.controller.js。

它开始搜索的根文件夹默认是sap-ui-core.js的文件夹。

您可以通过定义data-sap-ui-resourceroots映射来更改根文件夹。它是一个javascript对象,它将命名空间映射到路径(相对于index.html)。

company.myProject.view.View1

搜索以下引导标记/resources/company/myProject/view/View1.view.xml
<script id="sap-ui-bootstrap" 
    src="resources/sap-ui-core.js"></script>

company.myProject.View1处搜索此引导标记/view/View1.view.xml

<script id="sap-ui-bootstrap" 
    src="resources/sap-ui-core.js"
    data-sap-ui-resourceroots='{
      "company.myProject": "./" }'></script>

company.myProject.View1

处搜索此引导标记ddd/myProject/view/View1.view.xml
<script id="sap-ui-bootstrap" 
    src="resources/sap-ui-core.js"
    data-sap-ui-resourceroots='{
      "company": "./ddd" }'></script>

编辑:请注意您必须在地图内使用"'无效。

编辑:澄清文件夹结构

我建议您将所有内容放在项目命名空间中。使用此文件夹结构:

WebContent
- controller
  - NewView.controller.js
- view
  - NewView.view.xml
- index.html
  • 查看文件夹重命名为 view (按照惯例命名空间为camelCase)。
  • newView.view.xml 重命名为 NewView.view.xml (类/视图按惯例为PascalCase)
  • 使用data-sap-ui-resourceroots='{ "myproject": "./" }'
  • 将您的控制器名称更改为 myproject.controller.NewView Controller.extend("myproject.controller.NewView", {...});sap.ui.controller("myproject.controller.NewView",{...});
  • 在xmlview中使用controllerName="myproject.controller.NewView"
  • 使用sap.ui.xmlview({ viewName: "myproject.view.NewView"}).placeAt("content");实例化视图。

这样您就不必为项目中的每个子文件夹添加映射。

答案 1 :(得分:0)

我遇到了同样的问题,@schnoedel 的解决方案对我不起作用,直到我在 webapp/resources 中安装 openui5 旁边将 src="https://openui5.hana.ondemand.com/resources/sap-ui-core.js" 更改为 src="resources/sap-ui-core.js" 。使用本地安装时,似乎 index.html 的位置仅用作 root 。我在使用远程变体时调试了资源根目录,但失败并显示错误消息“无法加载 https://openui5.hana.ondemand.com/resources/view/App.view.xml"