[UI5]如何获取当前路线名称?

2020-08-23 03:23发布

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

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


专家们,

在我的应用程序中,我有几条路线,例如:

"路线":[
         {
           " pattern":"详细信息/产品",
           "名称":"产品",
           " target":" productTarget"
         },
         {
           " pattern":"交易/帐户",
           " name":"帐户",
           " target":" accountTarget"
         }
 ] 

例如:用户现在正在访问路线...../detail/Account,当他使用浏览器中的"刷新"按钮刷新整个页面时,该页面将再次加载帐户页面。

但是在我App.controller.js的onInit函数中,我想知道当前路线是什么。 例如,当我在产品页面上刷新时,在App.controller.js的onInit函数中可以获取当前路由为产品,如果在帐户页面上刷新,则可以在App.controller.js的onInit函数中获取当前路由为帐户。 这可能吗? 我在路由中设置了" async:true"。 看来App.controller.js的onInit函数始终在检查当前路由之前?

谢谢!

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

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


专家们,

在我的应用程序中,我有几条路线,例如:

"路线":[
         {
           " pattern":"详细信息/产品",
           "名称":"产品",
           " target":" productTarget"
         },
         {
           " pattern":"交易/帐户",
           " name":"帐户",
           " target":" accountTarget"
         }
 ] 

例如:用户现在正在访问路线...../detail/Account,当他使用浏览器中的"刷新"按钮刷新整个页面时,该页面将再次加载帐户页面。

但是在我App.controller.js的onInit函数中,我想知道当前路线是什么。 例如,当我在产品页面上刷新时,在App.controller.js的onInit函数中可以获取当前路由为产品,如果在帐户页面上刷新,则可以在App.controller.js的onInit函数中获取当前路由为帐户。 这可能吗? 我在路由中设置了" async:true"。 看来App.controller.js的onInit函数始终在检查当前路由之前?

谢谢!

付费偷看设置
发送
6条回答
d56caomao
1楼 · 2020-08-23 03:54.采纳回答

" sap/ui/core/routing/HashChanger"

HashChanger.getHash()

Aaron 3364
2楼-- · 2020-08-23 04:13

他只是想知道他在哪里,而不是确切的名字...。

hengyuye
3楼-- · 2020-08-23 04:00

自UI5 v1.75起 ,有一个新的API getRouteInfoByHash 提供了路由名称 :

 getCurrentRouteName:function(router = this.getOwnerComponent()。getRouter()){
   const currentHash = router.getHashChanger()。getHash();
   返回router.getRouteInfoByHash(currentHash).name; //从1.75开始
 } 

或者,控制器还可以将处理程序附加到 routePatternMatched 事件,以便收到有关当前路由名称的通知:

 onInit:function(){//根视图
   const router = this.getOwnerComponent()。getRouter();
   router.attachRoutePatternMatched(this.onRoutePatternMatched,this);
  //...
 },
 onRoutePatternMatched:function(event){
   const currentRouteName = event.getParameter(" name");
  //...
 },

发件人: https://stackoverflow.com/a/60152360

Aaron 3364
4楼-- · 2020-08-23 04:04

谢谢Sagarika,谢谢您的回答。 我选择了Jun的答案,但您的方法也有效。

我是小鹏鹏啊
5楼-- · 2020-08-23 04:03

您可以从下面尝试。

var url = window.location.href; //获取整个URL。

之后,例如,根据模式的索引确定基准。

if(url.indexOf(" Product")> -1)//如果为true,则模式为Product。

此致

Sagarika。

骆驼绵羊
6楼-- · 2020-08-23 03:57

一周热门 更多>