我在第一个屏幕上有一个Master-Detail页面。在该屏幕上,出现一个带有3个单选按钮的对话框。在单击第一个单选按钮时,它应该导航到具有全屏视图的另一个页面,但我无法执行此操作。它抛出以下错误:控件SplitAppId没有名为pages的聚合 - EventProvider sap.ui.core.routing.Target。 SplitAppId是Master-detail app的基页的Id。我知道路由时有一些错误,但我无法弄明白。请帮忙。下面是代码。谢谢。
noDataDetail.controller.js:
sap.ui.define([
"sap/ui/core/mvc/Controller"
], function (Controller) {
"use strict";
return Controller.extend("hmel.CreateTravelRequest.controller.noDataDetail", {
onInit: function()
{
this.router = sap.ui.core.UIComponent.getRouterFor(this);
this.router.attachRoutePatternMatched(this.handleRouteMatched, this);
},
handleRouteMatched: function(oEvent) {
if (oEvent.getParameter("name") !== "noDataDetail") {
return;
}
this.selectionFragment = sap.ui.xmlfragment("hmel.CreateTravelRequest.view.SelectDialog", this);
this.getView().addDependent(this.selectionFragment);
this.selectionFragment.open();
},
onSubmit: function() {
var radioBtnGrp = sap.ui.getCore().byId("radioBtnGrpId");
var selectedIndex = radioBtnGrp.getSelectedIndex();
this.selectionFragment.close();
this.selectionFragment.destroy();
this.selectionFragment = null;
if (selectedIndex === 0) {
this.onTravelReqCreate();
} else if (selectedIndex === 1) {
this.onGuestHouseApproval();
} else if (selectedIndex === 2) {
this.onMealApproval();
}
}
,
onTravelReqCreate: function() {
this.router.navTo("CreateTravelReq");
}/*,
onMealApproval: function() {
this.router.navTo("MealMaster");
},
onGuestHouseApproval: function() {
this.router.navTo("GuestHouseMaster");
}*/
});
});
manifest.json:
{
"_version": "1.8.0",
"sap.app": {
"id": "hmel.CreateTravelRequest",
"type": "application",
"i18n": "i18n/i18n.properties",
"applicationVersion": {
"version": "1.0.0"
},
"title": "{{appTitle}}",
"description": "{{appDescription}}",
"sourceTemplate": {
"id": "ui5template.basicSAPUI5ApplicationProject",
"version": "1.40.12"
}
},
"sap.ui": {
"technology": "UI5",
"icons": {
"icon": "",
"favIcon": "",
"phone": "",
"phone@2": "",
"tablet": "",
"tablet@2": ""
},
"deviceTypes": {
"desktop": true,
"tablet": true,
"phone": true
},
"supportedThemes": [
"sap_hcb",
"sap_belize"
]
},
"sap.ui5": {
"rootView": {
"viewName": "hmel.CreateTravelRequest.view.noDataSplitApp",
"type": "XML"
},
"dependencies": {
"minUI5Version": "1.30.0",
"libs": {
"sap.ui.layout": {},
"sap.ui.core": {},
"sap.m": {}
}
},
"contentDensities": {
"compact": true,
"cozy": true
},
"models": {
"i18n": {
"type": "sap.ui.model.resource.ResourceModel",
"settings": {
"bundleName": "hmel.CreateTravelRequest.i18n.i18n"
}
}
},
"resources": {
"css": [
{
"uri": "css/style.css"
}
]
},
"routing": {
"config": {
"routerClass": "sap.m.routing.Router",
"viewType": "XML",
"async": true,
"viewPath": "hmel.CreateTravelRequest.view",
"targetAggregation": "masterPages",
"clearTarget": false
},
"routes": [
{
"pattern": "",
"name": "noDataMaster",
"view": "noDataMaster",
"targetControl": "SplitAppId",
"subroutes": [
{
"pattern": "",
"name": "noDataDetail",
"view": "noDataDetail",
"targetAggregation": "detailPages"
}
]
},
{
"pattern": "CreateTravelReq",
"targetAggregation":"pages",
"name": "CreateTravelReq",
"viewPath": "hmel.CreateTravelRequest.view",
"view":"CreateTravelReq",
"controlId":"SplitAppId"
}
]
}
}
}
我想从noDataDetail导航到CreateTravelReq页面。
我没有使用Master-Detail页面,而是使用全屏页面作为基础容器,这使得导航和路由方式变得非常容易。
我认为问题出在manifest.json中的“模式”中,你已经要求路由器向navTo
另一个屏幕而不提供两者之间的链接。假设每个单选按钮都是一个产品,请查看SAP Master-Detail with levels的此示例,该产品将导航到另一个视图。
要么
看看这个应用程序,展示如何在主要和双重细节视图Master-Detail Example之间导航