2015-12-02 92 views
0

我從視圖控制器傳遞參數到另一個視圖控制器時出錯。變量ID是未定義的。SAPUI5路由器錯誤

Recive控制器

var oParameters = oEvent.getParameters(); 

alert(oParameters.arguments.id); 
alert(oParameters.arguments.entity); 

通行證控制器

var bReplace = jQuery.device.is.phone ? false : true; 
    var context = { 
     entity: "EmployeeCollection", 
     id: "1" 
    }; 
    this.getRouter().myNavBack("detail", context, bReplace); 

參數實體的工作。

謝謝。

+0

從你發佈的內容看,似乎沒有問題。你能發佈一個工作代碼片段嗎? – Breakpoint

+0

您確定上下文數據是通過事件參數傳遞的嗎?嘗試通過設置一個調試器來檢查oEvent-Data; - 在Eventhandler-Function中聲明 –

回答

0

首先,我建議你使用公共API來獲取參數,因爲這樣一來,你都是安全的一些UI5內部變化(以防萬一你沒有做這種方式):

var oArgs = oEvent.getParameter("arguments"); 

除此之外,你能否請你發佈你的路由配置?我對相應的路線模式感興趣。在你的情況下,你只能訪問「實體」,如果它是你的路線模式的一部分,它必須是mandatory parameter你的情況。在這種情況下,你會獲得這樣的:

var sEntity = oEvent.getParameter("arguments").entity; 

如果「實體」應是一個查詢參數,那麼你的代碼看起來略有不同:

var bReplace = jQuery.device.is.phone ? false : true; 
var context = { 
    id: "1", 
    query : { 
     entity: "EmployeeCollection", 
    } 
}; 
this.getRouter().myNavBack("detail", context, bReplace); 

這是你將如何獲得在您的查詢參數(你如何稱呼它)「接收」控制器:

var oArgs = oEvent.getParameter("arguments"); 
var oQuery = oArgs["?query"]; 
var sEntity = oQuery.entity; 

我想更多的細節檢查的官方Navigation & Routing Tutorial - Step 9

另外請記住,您還沒有發佈自己的myNavBack()函數的代碼。也許在那裏有什麼問題,但除非你發佈代碼,否則誰都不知道;-)

+0

嗨,謝謝你的回答。 –

+0

感謝您的回答。我的組件配置: \t \t \t路線:[{ \t \t \t \t模式: 「」, \t \t \t \t名稱: 「主」, \t \t \t \t的觀點: 「大師」, \t \t \t \t targetAggregation :「masterPages」, \t \t \t \t targetControl:「idAppControl」, 和\t \t \t \t子路徑: \t \t \t \t \t { \t \t \t \t \t圖案: 「EmployeeCollection {實體}」, \t \t \t \t \t名: 「細節」, \t \t \t \t \t視圖: 「Detail」, \t \t \t \t \t過渡: 「滑動」 \t \t \t \t}, \t \t \t \t { \t \t \t \t \t圖案: 「PlaceCollection {實體}」, \t \t \t \t \t名: 「stationDetail」, \t \t \t \t \t查看:「StationDetail」, \t \t \t \t \t過渡: 「滑動」 \t \t \t \t}, \t \t \t \t { \t \t \t \t \t圖案: 「VehicleCollection {實體}」, \t \t \t \t \t名: 「trainDetail」 , \t \t \t \t \t觀點: 「TrainDetail」, \t \t \t \t \t過渡: 「幻燈片」 \t \t \t \t}] –

+0

哎呀,看來你是使用 「舊」,並有點 「過時」 路由配置!你使用的是什麼版本的UI5?您的應用是新應用還是您需要維護的某個「舊」應用?無論如何,導航和路由教程介紹了最新的API和新的絕對優選的路由配置,包括目標。您正在使用「舊方式」(即子路由不在「新」路由中使用...)。我建議你遷移。但首先閱讀教程:-) 另一個問題:你可以舉一個例子,說明模式「EmployeeCollection {entity}」的哈希是怎樣的? – Nabi