开发者问题收集

SAPUI5 通过打开新选项卡导航到同一应用程序中的视图

2018-05-23
5214

我有一个 SAPUI5 应用程序,我需要通过在 View1 控制器中编写方法从另一个视图 (View1) 传递一些查询字符串参数来打开一个视图 (View2)。

到目前为止,我已经按照下面这样操作,当我通过 webIDE 运行应用程序时,它工作正常。但是当我将应用程序部署到云平台时,它会出现错误。

控制器 js 函数

handleDetailNavPress: function(oEvent) {
            var viewModel = this.getModel();
            var headerInfo = viewModel.getProperty("/HeaderInfo");


            var navUrl = "#detailscreen/params?docNo=" +
                headerInfo.DocNo+ "&docName=" + headerInfo.DocName";

            var url = window.location.href.split('#')[0] + navUrl;
            //Navigate to second view
            sap.m.URLHelper.redirect(url, true);
        }

清单中的路由设置

"routing": {            "routes": [
                {
                    "pattern": "viewone",
                    "name": "viewone",
                    "target": "viewone"
                },
                {
                    "pattern": "viewtwo/params:?query:",
                    "name": "viewtwo",
                    "target": "viewtwo"
                }           ],

部署后出现的错误

viewSample:112 Uncaught TypeError: Cannot read property '6' of null at getIntentParameter (qcmanager:112) at Object.requestSite (qcmanager:352) at Object.getSiteJson (qcmanager:500) at Object.loadAppSite (qcmanager:567) at qcmanager:745 at qcmanager:746

问题是什么。是否有另一种方法可以通过打开新选项卡在同一应用程序内导航。

2个回答

如果您想在新选项卡中打开 Vi 2,有两个选项:

  1. 为该新视图创建一个单独的 inde.html,并将该视图包含在该 index.html 中(它基本上会像用户的单独 SAP UI5 应用程序一样工作) 但我不会推荐这个

另一个解决方案是

  1. 而不是使用“sap.m.URLHelper”,用户: window.open('[PAth to you Application index file]/[url]', ' _blank '); 例如:window.open(' https://www.mysapui5app/#podetailscreen/params?docNo= ...', ' _blank ');

*请记住,_blank 是在新选项卡中打开视图的必需项。

Piyush aggarwal
2018-05-24

当您将应用程序部署到启动板时,链接会发生变化,第二个视图类似于当前 URL + &/ ,因此您需要检查 URL 并正确传递它。 只需相应地更改这两个变量:

navUrl
URL

此外,我建议进行跨应用程序导航,因为这样会更安全。

Mrinalini Vishnoi
2019-07-17