UI5从路由器URL删除或隐藏#或获取URI

2020-08-19 13:39发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我正在尝试使用 Javascript URL API 来获取URL的搜索参数,但是由于路由器自动生成到URL中的"#",因此无法正确读取。 在URL中设置哈希之前,有什么方法可以删除它或对其进行编码?

例如,它会自动设置主(主)URL

http://localhost/#

模式为""的空

manifest.json(路由清单中的数据)

"路由":{
             " config":{
                 " routerClass":" sap.m.routing.Router",
                 " viewType":" XML",
                 " viewPath":" mainhub.ui.view",
                 " controlId":" mainCont",
                 " controlAggregation":"内容",
                 " transition":" slide",
                 "异步":是的,
                 " clearTarget":是,
                 "绕过":{
                     " target":" notFound"
                 }
             },
             "路线":[{
                 " pattern":"",
                 " name":" Homeview",
                 " target":" home"
                 },
                 {
                 " pattern":" publi/{?search}",
                 " name":" Publ",
                 " target":" publ"
                 }
             ],

             "目标":{
                 "家":{
                    " viewId":"家",
                    " viewName":"首页",
                    " viewLevel":1
                 },
                 "发布":{
                    " viewId":" publ",
                    " viewName":"公共",
                    " viewLevel":2
                 },
                 "未找到": {
                    " viewId":" notFound",
                    " viewName":" dialogs.NotFound",
                    " transition":"显示"
                 }
             }
         }

 

controller.js(进行导航的位置)

 ...
 
  onDetailViewPress:function(){

             var publId = 0;
             var参数=
                 {
                     " parameterName1":" parameterValue1",
                     "?search":{" publId":publId}
                 };

            this.getRouter()。navTo(" Publ",parameters);
         },

 

导航到此页面后,URL为:

http://localhost/#/publ/?publId = 0

非常感谢您提供的指导!

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我正在尝试使用 Javascript URL API 来获取URL的搜索参数,但是由于路由器自动生成到URL中的"#",因此无法正确读取。 在URL中设置哈希之前,有什么方法可以删除它或对其进行编码?

例如,它会自动设置主(主)URL

http://localhost/#

模式为""的空

manifest.json(路由清单中的数据)

"路由":{
             " config":{
                 " routerClass":" sap.m.routing.Router",
                 " viewType":" XML",
                 " viewPath":" mainhub.ui.view",
                 " controlId":" mainCont",
                 " controlAggregation":"内容",
                 " transition":" slide",
                 "异步":是的,
                 " clearTarget":是,
                 "绕过":{
                     " target":" notFound"
                 }
             },
             "路线":[{
                 " pattern":"",
                 " name":" Homeview",
                 " target":" home"
                 },
                 {
                 " pattern":" publi/{?search}",
                 " name":" Publ",
                 " target":" publ"
                 }
             ],

             "目标":{
                 "家":{
                    " viewId":"家",
                    " viewName":"首页",
                    " viewLevel":1
                 },
                 "发布":{
                    " viewId":" publ",
                    " viewName":"公共",
                    " viewLevel":2
                 },
                 "未找到": {
                    " viewId":" notFound",
                    " viewName":" dialogs.NotFound",
                    " transition":"显示"
                 }
             }
         }

 

controller.js(进行导航的位置)

 ...
 
  onDetailViewPress:function(){

             var publId = 0;
             var参数=
                 {
                     " parameterName1":" parameterValue1",
                     "?search":{" publId":publId}
                 };

            this.getRouter()。navTo(" Publ",parameters);
         },

 

导航到此页面后,URL为:

http://localhost/#/publ/?publId = 0

非常感谢您提供的指导!

付费偷看设置
发送
5条回答
jovirus
1楼-- · 2020-08-19 13:41

" pattern":" publi/{?search}",在manifest.json中,URL:publ/?publId = 0似乎不同。 publi或publ

还可以解释您的要求吗? 您想要什么以及当前正在发生什么?

问候,

Sharath

Nan4612
2楼-- · 2020-08-19 13:47

导航是基于哈希的,因此您不需要工作 修理。 网址应具有哈希值。 现在,您不需要任何其他库即可获取搜索参数。 检查以下代码链接。

https://sapui5.hana.ondemand.com/#/entity/sap.ui.core.routing.Router/sample/sap.ui.core.sample。 RoutingMasterDetail/code/routingApp%2Fcontroller%2FDetail1.controller.js

闻人可可
3楼-- · 2020-08-19 14:02

您好,是否有任何理由不依赖路由匹配事件以获取URL参数(或是必填参数)? 路由器框架的存在主要是为了帮助您完成诸如此类的任务。

您将无法删除应用程序URL哈希,因为它是路由器实现的一部分。 没什么会阻止您在调用URL构造函数之前操纵URL字符串的(根本不需要重写浏览器URL),例如

 var a =" http://localhost/#/publ/?publId =  0";
 var u = new URL(" http://" + a.substring(a.indexOf("#")+1)); 

但是,再次,您应该使用什么路由器 可以获取路由参数。

xfwsx85
4楼-- · 2020-08-19 13:41

都谢谢。

我最终使用了" getParameters"来获取搜索参数,如路由教程中所述

CJones
5楼-- · 2020-08-19 13:40

嗨。

对,是" pattern":" publ/{?search}"。 我打错了。

请求是从网址中删除"#"。

我正在尝试这样做:

 var currentURL = new URL(" http://localhost/#/publ/?publId = 0"),//返回URL对象

 urlParams = new URLSearchParams(currentURL.search),//返回""。 期望在"?"之后返回所有参数。 像" publid = 0"

 publId = urlParams.get(" publId"); //再次返回"",因为urlParams为空。 预期返回" 0"
 

如果我使用hashtagless(#)URL执行以上代码,则可以完成预期的工作。 但是我无法在UI5的路由文档中找到如何隐藏或替换它。

示例:

新URL(" http://localhost/#/publ/?publId = 0")返回:

 URL {
 href:" http://localhost/#/publ/?publId = 0",
 来源:" http://localhost",
 协议:" http:",
 用户名: "",
 密码:"",
 主机:" localhost",
 主机名:" localhost",
 港口: "",
 路径名:"/",
 搜索:""} 

新URL(" http://localhost/publ/?publId = 0")返回:

 URL {href:" http://localhost/publ/?publId = 0",
 来源:" http://localhost",
 协议:" http:",
 用户名: "",
 密码:"",
 主机:" localhost",
 主机名:" localhost",
 港口: "",
 路径名:"/img/publ/",搜索:"?publId = 0"} 

一周热门 更多>