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

时间:2018-05-23 07:23:54

标签: sapui5

我有一个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:无法读取属性' 6'为null       at getIntentParameter(qcmanager:112)       at Object.requestSite(qcmanager:352)       在Object.getSiteJson(qcmanager:500)       在Object.loadAppSite(qcmanager:567)       在qcmanager:745       在qcmanager:746

问题是什么?是否有另一种方法可以通过打开新标签在同一个应用程序中导航。

2 个答案:

答案 0 :(得分:0)

如果要在新表格中打开Vi 2,有两个选项:

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

    1. 而不是使用" sap.m.URLHelper",用户: window.open(' [PAth to you Application index file] / [url]',' _blank '); 例如:window.open(' https://www.mysapui5app/#podetailscreen/params?docNo= ...',' _blank ');
    2. *请记住,_blank在新标签页中打开视图很疯狂。

答案 1 :(得分:0)

在部署应用程序时,启动板的链接会更改,第二个视图就像当前URL + &/一样,因此您需要检查URL并正确传递它。 只需相应地更改这两个变量:

navUrl
URL

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