我在尝试初始化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 ...,但是我确实有,所以我不知道下一步该怎么做。>
在此感谢您的帮助!
答案 0 :(得分:0)
已解决。
问题是manifest.js中使用的缩进已损坏。与路线和导航相关的所有信息都位于节点“ sap.ui5”的同一级别,而它们需要位于该节点的较低级别。 本质上,由于我混用了许多技术,因此我没有通过SAP WebIDE进行编码。但是为了解决这个问题,我将项目加载到了WebIDE中,并且能够看到错误。 我猜想在处理SAPUI5控件时,最好通过WebIDE对其进行维护。