2016-06-21 83 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