无法从SAPUI5中的主详细信息视图路由到全屏页面

问题描述 投票:0回答:2

我在第一个屏幕上有一个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页面。

javascript sapui5 manifest
2个回答
0
投票

我没有使用Master-Detail页面,而是使用全屏页面作为基础容器,这使得导航和路由方式变得非常容易。


0
投票

我认为问题出在manifest.json中的“模式”中,你已经要求路由器向navTo另一个屏幕而不提供两者之间的链接。假设每个单选按钮都是一个产品,请查看SAP Master-Detail with levels的此示例,该产品将导航到另一个视图。

要么

看看这个应用程序,展示如何在主要和双重细节视图Master-Detail Example之间导航

© www.soinside.com 2019 - 2024. All rights reserved.