Routing SAPUI5-带参数的路由
我有两页。在第一个页面上,用户需要选择下拉值并单击submit,在这里我称之为jQueryAjax。成功后,我需要将响应传递到第2页。下面是我试过的。但它不起作用 firstPage.controller.jsRouting SAPUI5-带参数的路由,routing,sapui5,sap-fiori,Routing,Sapui5,Sap Fiori,我有两页。在第一个页面上,用户需要选择下拉值并单击submit,在这里我称之为jQueryAjax。成功后,我需要将响应传递到第2页。下面是我试过的。但它不起作用 firstPage.controller.js jQuery.ajax({ url: requestUriOutput, method: "GET", async: false, dataType: "json", success: function(data) { if(data.d.results.length > 0)
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});
}
} });
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;
},
SecondPage.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});
}
} });
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”
的路由,但您的清单.json
不包含具有此名称的路由。对齐路由名称,然后重试
检查网页的URL;下载数据后,它应该会更改。如果未更改,请确保在组件.js
init()
函数:this.getRouter().initialize()
中初始化了路由器
编辑:
根据提供的代码,您正在尝试添加一个数组作为URL参数。这是不受支持的,您应该只传递字符串参数或对整个数组进行编码并在第二个视图中解码。
路由定义也不正确;如果要使用目标,应该定义可以看到的目标对象。如果您不想使用目标,请将路由器
构造函数中的属性名“target”
更改为“view”
(请注意,它现在已被弃用,因此我建议使用组件和/或manifest.json来定义与目标的路由)。很抱歉,这是一个编辑错误。在实际代码中,我已经正确地传递了它。我还检查了component.js
&路由器已初始化。但它仍然返回错误“无法读取null的属性'length'”@Yal您可以发布您的代码吗(例如使用JSBin)?收到错误消息后,您是否检查了URL?它是否包含details参数?我在这里添加了代码。请参阅@nistv4n
谢谢您提供的信息!!现在,我已经全局声明了一个模型&在第一页设置了JSONModel,并在第二页检索了数据。成功了。在我的工作区中,我还使用了manifest.json中的目标。