无法初始化路由器

时间:2018-07-10 12:52:26

标签: routes sapui5

我在尝试初始化SAPUI5的路由器时遇到问题。 这是我的webapp文件夹结构: webapp folder

在清单的底部,我定义了所有路由配置,路由和目标:

"routing": {
    "config": {
        "routerClass": "sap.m.routing.Router",
        "viewType": "XML",
        "viewPath": "ar.com.ordago.FSOT.view",
        "controlId": "app",
        "controlAggregation": "pages",
        "transition": "slide",
        "async": true
    },
    "routes": [{
         "pattern": "",
         "name": "appHome",
         "target": "home"
    }],
    "targets": {
         "home": {
                "viewId": "home",
                "viewName": "Home",
                "viewLevel" : 1
        }
    }

我的App.view:

<mvc:View
controllerName="ar.com.ordago.FSOT.controller.App"
xmlns:l="sap.ui.layout"
xmlns:mvc="sap.ui.core.mvc"
xmlns:core="sap.ui.core"
xmlns:form="sap.ui.layout.form"
xmlns="sap.m">
  <App id="app"/>
</mvc:View>

我的Home.view

<mvc:View
controllerName="ar.com.ordago.FSOT.controller.Home"
xmlns:l="sap.ui.layout"
xmlns:mvc="sap.ui.core.mvc"
xmlns:core="sap.ui.core"
xmlns="sap.m">
    <pages>
        <Page
            id="page"
            title="{i18n>title}">
            <content>
            </content>
         </Page>
    </Pages>
</mvc:View>

然后在Component.js上,我尝试创建路由器的实例(为防万一,我将其所有开头都包括在内):

sap.ui.define([
"sap/ui/core/UIComponent",
"sap/m/MessageToast",
"sap/ui/Device",
"sap/ui/model/json/JSONModel",
"./model/models",
"./model/formatter"
], function(UIComponent, MessageToast, Device, JSONModel, models) {
"use strict";

return UIComponent.extend("ar.com.ordago.FSOT.Component", {

    metadata: {
        manifest: "json"
    },

    /**
     * The component is initialized by UI5 automatically during the startup of the app and calls the init method once.
     * @public
     * @override
     */

    init : function() {
        // call the base component's init function
        UIComponent.prototype.init.apply(this, arguments);
        // set the device model
        this.setModel(models.createDeviceModel(), "device");
        // create the views based on the url/hash
        this.getRouter().initialize();


    }

当我运行Webapp时,出现以下错误:无法读取未定义的属性“初始化”

我在这里搜索,很多人都有类似的问题。但是对于所建议的每个解决方案,问题是没有在component.js中的init函数上调用UIcomponent.prototype ...,但是我确实有,所以我不知道下一步该怎么做。

在此感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

已解决。

问题是manifest.js中使用的缩进已损坏。与路线和导航相关的所有信息都位于节点“ sap.ui5”的同一级别,而它们需要位于该节点的较低级别。 本质上,由于我混用了许多技术,因此我没有通过SAP WebIDE进行编码。但是为了解决这个问题,我将项目加载到了WebIDE中,并且能够看到错误。 我猜想在处理SAPUI5控件时,最好通过WebIDE对其进行维护。