2017-06-15 1 views
1

enter image description hereMultiSelect Master Listで経路パターンを設定するには?

私はマスターディテールアプリにマスターリストを持っていますが、マルチセレクトモードに設定すると、選択したすべてのアイテムのuserIdsを取得したいと思います。これらのデータを経路経由でdetail.controller.jsに渡すエレガントな方法はありますか?

単一選択マスターページでの私のshowDetail機能("pattern": "User/{objectId}"):

this.getRouter().navTo("object", { 
    objectId : oItem.getBindingContext().getProperty("ID") 
}); 

は私がUser/{objectIdArray}User/id1/id2/...か何かを使用する必要がありますか? URLに奇妙に見えますか?

参考:

manifest.jsonを::

  { 
       "pattern": "MultiSelect/{objectIds}", 
       "name": "multi", 
       "target": [ 
        "master", 
        "multi" 
       ] 
      } 

Master.controller.js

  _showDetail : function (oItem) { 
      const masterModel = this._oList.getMode(); 

      if(masterModel === "None") { 
       this.getRouter().navTo("object", { 
        objectId : oItem.getBindingContext().getProperty("userID") 
       }, false); 
      } else { //MultiSelect Mode 
       const lists = this._oList.getSelectedItems(), 
       ids = lists.map(item => item.getBindingContext().getProperty("userID")); 

       this.getRouter().navTo("multi", { 
        objectIds : JSON.stringify(ids) 
       }, true); 
      } 
     }, 

マルチユーザー@MarcへRoute Pattern Examples

+0

マルチセレクトの目的は何ですか?ガイドラインによると、このアプリケーションタイプは、詳細に表示される1つの項目を選択するために使用されます。https://experience.sap.com/fiori-design-web/split-screen/ – matbtt

+0

私はすべての情報を表示したい詳細ページで選択した項目それは許されないのですか? – Tina

+1

あなたはあなたのURLの見た目をあまり気にしないでください。 1つのアイデア:あなたのIDを単純な区切り文字(例: "User/001,002,003")に連結し、その文字列をDetail.controllerで分割します – Marc

答えて

0

おかげで、以下の私のコードです。 controller.js

 _onMultiMatched : function (oEvent) { 
      const sObjectIds = oEvent.getParameter("arguments").objectIds, 
      idArray = JSON.parse(sObjectIds); 
      //... Do whatever I like 
     } 
関連する問題