gpt4 book ai didi

sapui5 - 如何从 url 获取参数的值以传递给事件处理程序

转载 作者:行者123 更新时间:2023-12-04 03:15:55 24 4
gpt4 key购买 nike

我有一个业务需求,我正在使用基于云的 sap webide 工具开发部署在 HCP 中的 sapui5 员工休假应用程序。

两种类型的员工将使用带有“IT”或“BPO”参数的两个不同 url 访问此应用程序:

https://webidetesting453789-inf98834.dispatcher.int.sap.hana.ondemand.com/webapp/index.html#/IT

https://webidetesting453789-inf98834.dispatcher.int.sap.hana.ondemand.com/webapp/index.html#/BPO

后端:我开发了一个 REST 服务,当我使用以下 url 为 IT 或 BPO 特定员工执行 GET 请求时,该服务以 json 格式为我提供员工详细信息,例如:
/irc.com/ircit/empleave/rest/empleave/item/requestor/IT
或者
/irc.com/ircit/empleave/rest/empleave/item/requestor/BPO
View :我使用了一个 xml View MyRequest,它将以表格格式向我显示来自 IT 或 BPO 的请求。

并且带有下拉菜单的创建 View (XML View )从“valueHelp”模型填充,页面标题等根据“IT”或“BPO”参数进行更改。

我在“MyRequest” View 的页脚中有一个创建按钮,它将调用创建 View 。

要求:

当我访问链接时
https://webidetesting453789-inf98834.dispatcher.int.sap.hana.ondemand.com/webapp/index.html#/IT

我在 MyRequest View 中收到了对 IT 员工和 BPO 的所有请求

但是当我单击创建按钮时,我的要求是在同一个 MyRequest View 中,它应该获取 url 参数,即 IT 或 BPO 并导航到具有该 url 参数的创建 View ,以便我可以设置 valuehelp 模型并更改页面标题和ui 组件的名称。

路由器配置。
"routes": [{
"pattern": "",
"name": "myRequests",
"target": "myRequests"
}, {
"pattern": "IT",
"name": "IT",
"target": "myRequests"
}, {
"pattern": "BPO",
"name": "BPO",
"target": "myRequests"
}, {
"pattern": "create",
"name": "Create",
"target": "create"
},

{
"pattern": "/id={id}",
"name": "Display",
"target": "display"
}
],
"targets": {
"myRequests": {
"viewName": "MyRequests",
"viewId": "myRequests",
"viewLevel": 1
},
"display": {
"viewName": "Display",
"viewId": "display",
"viewLevel": 2
},
"create": {
"viewName": "Create",
"viewId": "create",
"viewLevel": 2
},
"copy": {
"viewName": "Create",
"viewId": "create",
"viewLevel": 2
},
"notFound": {
"viewName": "NotFound",
"viewId": "notFound"
}
}
}
},

我的请求 Controller
onInit: function() {
var oComponent = this.getOwnerComponent();
this._router = oComponent.getRouter();
this._router.getRoute("IT").attachPatternMatched(this._routePatternMatchedForIT, this);
this._router.getRoute("BPO").attachPatternMatched(this._routePatternMatchedForBPO, this);

},
_routePatternMatchedForIT: function (oEvent) {
console.log('Shout for IT');
var sRouteName = oEvent.getParameter('name');
// Call the service : /irc.com/ircit/empleave/rest/empleave/item/requestor/IT
},
_routePatternMatchedForBPO: function (oEvent) {
console.log('Shout for BPO');
// Call the service : /irc.com/ircit/empleave/rest/empleave/item/requestor/BPO
var sRouteName = oEvent.getParameter('name');
}

onCreatePress: function(oEvent) {
//var sRouteName = this.getViewName();
//alert(sRouteName);
/*var sRouteName = oEvent.getParameter("name");
if (sRouteName === "IT") {
this.getRouter().navTo("create/IT");
}
if (sRouteName === "BPO"){

this.getRouter().navTo("create/BPO");
}*/
this.getRouter().navTo("Create");
},

创建按钮的 MyRequest View
Button id="btnCreate" text="{i18n>btnOpenCreateView}" press="onCreatePress" type="Accept" visible="true"/>

创建 Controller
onRouteMatched: function(oEvent) {
var sRouteName = oEvent.getParameter("name");
//alert(sRouteName);
if (sRouteName === "create") {
this.routeName = sRouteName;
this._loadDataDC();
}

请建议我如何修改 create Controller 和 MyRequest Controller ,以便我从 url 中获得 IT 或 BPO 值
https://webidetesting453789-inf98834.dispatcher.int.sap.hana.ondemand.com/webapp/index.html#/IT

or

https://webidetesting453789-inf98834.dispatcher.int.sap.hana.ondemand.com/webapp/index.html#/BPO

并在按下创建按钮时将其与事件 onCreatePress() 一起传递,以便我可以导航到创建 View 并加载相应的 valueHelp 模型以及设置页面标题和其他 ui 组件。

最佳答案

使用以下代码获取哈希:

  • 使用哈希转换器:
    var oHashChanger = new sap.ui.core.routing.HashChanger();
    var sHash = oHashChanger.getHash(); // it will return IT or BPO
  • 使用窗口对象:
    var sHash = window.location.hash; // it will return #/IT or #/BPO.

  • 实际上在寻找更好的答案。

    关于sapui5 - 如何从 url 获取参数的值以传递给事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40997943/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com