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

时间:2018-09-12 10:58:08

标签: javascript sapui5 manifest

我在第一个屏幕上有一个“主从页面”。在该屏幕上,出现一个带有3个单选按钮的对话框。单击第一个单选按钮时,它应导航到另一个具有全屏视图的页面,但我无法执行此操作。它引发以下错误:控件SplitAppId没有名为页面的聚合-EventProvider sap.ui.core.routing.Target 。 SplitAppId是主从应用程序基础页面的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页面。

2 个答案:

答案 0 :(得分:0)

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

OR

看看这个应用程序,展示如何在主视图和详细视图Master-Detail Example

之间导航

答案 1 :(得分:0)

我使用“全屏”页面作为基本容器,而不是使用“详细信息”页面,这使导航和路由方式变得非常简单。