SAPUI5 - 带参数的路由
SAPUI5 - Routing with parameter
我有 2 页。在第一页上,用户需要 select 下拉值并单击提交,我在这里调用 jQuery ajax。成功后,我需要将响应传递给第 2 页。以下是我尝试过的方法。但是没用。
firstPage.controller.js
jQuery.ajax({
url: requestUriOutput,
method: "GET",
async: false,
dataType: "json",
success: function(data) {
if(data.d.results.length > 0)
{
var detail = data.d.results.concat();
var oRouter = sap.ui.core.UIComponent.getRouterFor(this);
oRouter.navTo("second", {details : detail});
}
} });
SecondPage.controller.js
onInit: function () {
var oRouters = sap.ui.core.UIComponent.getRouterFor(this);
oRouters.getRoute("second").attachPatternMatched(this._onObjectMatched, this);
},
_onObjectMatched: function (oEvent) {
var obj = oEvent.getParameter("arguments").details;
},
manifest.json
"routes": [{
"pattern": "",
"name": "app",
"target": "app"
}, {
"pattern": "first",
"name": "first",
"target": "first"
}, {
"pattern": "second/{details}",
"name": "second",
"target": "second"
}],
您想导航到名称为 "table"
的路线,但您的 manifest.json
不包含具有此名称的路线。对齐路线名称并重试。
查看网页URL;下载数据后它应该会改变。如果它没有改变,请确保 router
在 Component.js
init()
函数中初始化:this.getRouter().initialize()
.
编辑:
根据提供的代码,您正在尝试添加一个数组作为 URL 参数。这是不支持的,您应该只传递字符串参数或对整个数组进行编码并在第二个视图中进行解码。
路由定义也不正确;如果你想使用目标,你应该定义一个目标对象,如你所见here。如果您不想使用目标,请在 Router
构造函数中将 属性 名称 "target"
更改为 "view"
(请注意,它现在已被弃用,因此我建议使用组件 and/or manifest.json 来定义带有目标的路由。
我有 2 页。在第一页上,用户需要 select 下拉值并单击提交,我在这里调用 jQuery ajax。成功后,我需要将响应传递给第 2 页。以下是我尝试过的方法。但是没用。
firstPage.controller.js
jQuery.ajax({
url: requestUriOutput,
method: "GET",
async: false,
dataType: "json",
success: function(data) {
if(data.d.results.length > 0)
{
var detail = data.d.results.concat();
var oRouter = sap.ui.core.UIComponent.getRouterFor(this);
oRouter.navTo("second", {details : detail});
}
} });
SecondPage.controller.js
onInit: function () {
var oRouters = sap.ui.core.UIComponent.getRouterFor(this);
oRouters.getRoute("second").attachPatternMatched(this._onObjectMatched, this);
},
_onObjectMatched: function (oEvent) {
var obj = oEvent.getParameter("arguments").details;
},
manifest.json
"routes": [{
"pattern": "",
"name": "app",
"target": "app"
}, {
"pattern": "first",
"name": "first",
"target": "first"
}, {
"pattern": "second/{details}",
"name": "second",
"target": "second"
}],
您想导航到名称为 "table"
的路线,但您的 manifest.json
不包含具有此名称的路线。对齐路线名称并重试。
查看网页URL;下载数据后它应该会改变。如果它没有改变,请确保 router
在 Component.js
init()
函数中初始化:this.getRouter().initialize()
.
编辑:
根据提供的代码,您正在尝试添加一个数组作为 URL 参数。这是不支持的,您应该只传递字符串参数或对整个数组进行编码并在第二个视图中进行解码。
路由定义也不正确;如果你想使用目标,你应该定义一个目标对象,如你所见here。如果您不想使用目标,请在 Router
构造函数中将 属性 名称 "target"
更改为 "view"
(请注意,它现在已被弃用,因此我建议使用组件 and/or manifest.json 来定义带有目标的路由。