2017-06-15 41 views
1

enter image description here如何在MultiSelect主列表中設置路由模式?

我在主 - 詳細信息應用程序的主列表,當我將它設置爲多選模式,我想捕獲所有所選項目的用戶id。是否有任何優雅的方式通過路由將這些數據傳遞給detail.controller.js

單選擇母版頁("pattern": "User/{objectId}")我showDetail功能:

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

我應該使用User/{objectIdArray}User/id1/id2/...什麼?它會在URL中看起來很奇怪嗎?

編號:下面Route Pattern Examples

+0

多重選擇的意圖是什麼?根據指南,這個應用程序類型應該用來選擇一個項目在細節中顯示:https://experience.sap.com/fiori-design-web/split-screen/ – matbtt

+0

我想顯示所有的信息在詳細頁面中選擇項目。所以這是不允許的? – Tina

+1

你不應該太在意你的URL的外觀。一個想法:用一個簡單的分隔符連接你的ID(例如「User/001,002,003」)並在你的Detail.controller中分割該字符串 – Marc

回答

0

感謝@Marc,是我的代碼:

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); 
      } 
     }, 

多用戶。 controller.js

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