2016-08-16 8 views
2

タイルのリストを使用してランチパッドアプリケーションを作成しようとしていますが、タイルをクリックするとアプリになる可能性があります。それは、私がランチパッドの同じビューに移動するのに必要なもの以外のグループのアプリケーションまたは他のグループであってもよいが、新しいタイルのリストを有する。今のところ、タイルをクリックしてスライドの遷移を行うと同じビューに移動するだけですが、同じデフォルトターゲットルートのルートを作成しても、アプリケーションを起動するとビューがレンダリングされません。同じビュー名の他のターゲットを作成したときに、ルートのターゲットとしている場合にのみ機能します。ここ同じビューで別のパラメータに移動する

"routes": [ 
     { 
      "pattern": "", 
      "name": "group", 
      "target": "group" 
     }, 
     { 
      "pattern": "group", 
      "name": "group2", 
      "target": "group2" 
     } 
     ], 
     "targets": { 
     "group": { 
      "viewName": "TileGroup", 
      "viewLevel" : 1 
     }, 
     "group2": { 
      "viewName": "TileGroup", 
      "viewLevel" : 2 
     } 
     } 
    } 

ANS今の私のTileGroupビューのコントローラ:私のマニフェストの一部である

。このコードでは

sap.ui.define([ 
 
    "sap/ui/core/UIComponent" 
 
], 
 
sap.ui.controller("pelissari.soficom.launchpad.controller.TileGroup", { 
 
\t onInit: function() { 
 
\t \t var oModel = new sap.ui.model.json.JSONModel(); 
 
    \t \t oModel.loadData("./model/data.json"); 
 
    \t \t this.getView().setModel(oModel); 
 
\t \t 
 
\t }, 
 
\t \t onPress: function (oEvent) { 
 
\t \t \t var oRouter = sap.ui.core.UIComponent.getRouterFor(this); 
 
\t \t \t oRouter.navTo("group2"); 
 
\t \t } 
 
\t }));

私はタイルをクリックし、アプリケーションの変更のURLが、ビューは変更されませんので、ナビゲーションが動作していることと思います。

答えて

5

URLが変更されている場合は、ソリューションの最初の部分が準備されています。唯一のことは、新しいターゲットに移動すべきではないということです。代わりに、同じターゲットに移動する必要がありますが、例えば、navTo方法の2番目のパラメータを使用して別のtilegroup識別子を渡す:

oRouter.navTo("tileView", {group: "group1"}); 

第二の部分はそう、あなたのコントローラたびURLが変更に上げイベントを取得含まあなたはその変化に取り組むことができます。

例えば、IDがnavToメソッドを使用して渡され、あなたがそれに応じてマニフェストのルートパターンを変更する必要がありますキャッチするには、次の:group:と呼ばれるオプションのパラメータを指定しながら

"pattern": "tiles/:group:" 

tilesは、あなたのURLで固定部分を示し、 group。あなたは(私はそれはあなたがする計画何だと思います)ルートからこれを実行したい場合は、それはあなたがURLが変更されたとき、あなたはコールを設定することができますトリガ取得したいルータに通知するために

"pattern": ":group:" 

する必要があります-バック。あなたは、コントローラのoninitをハンドラに以下のコードを挿入することによって、そうすることができます。これはあなたのOnInitハンドラである場合は、ターゲットgroupを伴うURLの変更があったとき

var oRouter = sap.ui.core.UIComponent.getRouterFor(this); 
oRouter.getRoute("group").attachPatternMatched(this._onPatternMatched, this); 

を、_onPatternMatchedハンドラが呼び出されます。後者は便利です。そうしないと、コントローラにリンクされたビューが表示されていなくても、URL変更ごとにメソッドがトリガされます。

_onPatternMatchedの方法では、タイルを変更できるように、表示する必要があるグループIDを読み戻す必要があります。あなたは、イベントパラメータからargumentsパラメータを読み取ることによって、これを行うことができます:ルーティングの

_onObjectMatched : function (oEvent) { 
    var groupId = oEvent.getParameter("arguments").group; 
    console.log("Group ID: " + groupId); 
}, 

必需品は非常によくUI5 walk-throughステップ313233で説明されています。特にパラメータ付きルーティングについて説明している第32部に注意してください。

+0

ありがとうございます。ユーザーがタイルを押したときにタイルのリストをフィルタリングすることに決めましたが、あなたの助けにたくさん感謝しています。 – Guto

+1

@Gutoこれをもう一度やり直す必要のあるアプリを見つけよう。だからこの知識を得ることは間違いない損失です。 – jpenninkhof

+0

これは本当です、もう一度ありがとうございます。 – Guto

関連する問題