2016-06-21 7 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にはこの名前のルートが含まれていません。経路名を整列して、やり直してください。

ウェブページのURLを確認してください。データがダウンロードされた後に変更する必要があります。変更されない場合は、 init()機能でrouterが初期化されていることを確認してください。this.getRouter().initialize()

編集: 提供されたコードに基づいて、URLパラメータとして配列を追加しようとしています。これはサポートされていません。文字列パラメータのみを渡すか、配列全体をエンコードし、2番目のビューでデコードする必要があります。 ルーティング定義も間違っています。ターゲットを使用する場合は、hereのようにターゲットオブジェクトを定義する必要があります。ターゲットを使用したくない場合は、Routerコンストラクタのプロパティ名"target""view"に変更してください(現在は非推奨となっているので、Componentおよび/またはmanifest.jsonを使用してターゲットとのルーティングを定義することをおすすめします)。

+0

ご迷惑をおかけしました。実際のコードでは、正しく渡しました。私は 'component.js'をチェックしました。ルータは初期化されています。しかし、それでも、 "nullのプロパティ 'length'を読み取ることができません" – Hari

+0

@Yalあなたは(JSBinを使用して)あなたのコードを投稿できますか?エラーメッセージが出た後にURLをチェックしましたか?詳細パラメータが含まれていましたか? – nistv4n

+0

ここに自分のコードを追加しました。 [JsBin](https://jsbin.com/muxuco/edit?html,console,output) – Hari

関連する問題