2016-06-21 121 views
0

我有2页。在第一页上,用户需要选择下拉值&点击提交,我在哪里调用jQuery ajax。成功时,我需要将回复传递给第2页。以下是我所尝试的内容。但它不起作用。SAPUI5 - 带参数的路由

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" 
     }], 

回答

0

要导航路由名称为"table",但你的manifest.json不包含具有此名称的路由。对齐路线名称并重试。

检查网页的网址;数据下载后它应该改变。如果没有变化,请确保router已在您的Component.jsinit()函数中初始化:this.getRouter().initialize()

编辑: 根据提供的代码,您尝试添加一个数组作为URL参数。这不被支持,你应该只传递字符串参数或编码整个数组并在第二个视图中解码。 路由定义也不正确;如果你想使用目标,你应该定义一个目标对象,你可以看到here。如果您不想使用目标,请在Router构造函数中将属性名称"target"更改为"view"(请注意,它现在已被弃用,所以我建议使用Component和/或manifest.json来定义具有目标的路由)。

+0

对不起,这是编辑错误。在实际的代码中,我已经正确地通过了它。我也检查过'component.js'路由器被初始化。但它仍然返回错误“无法读取属性的'长度'null” – Hari

+0

@Yal你可以发布你的代码(例如使用JSBin)吗?收到错误讯息后,您是否检查过网址?它是否包含细节参数? – nistv4n

+0

我在这里添加了我的代码。请参考[JsBin](https://jsbin.com/muxuco/edit?html,console,output) – Hari