2017-05-04 63 views
-1

我想要綁定瓷磚菜單,但我遇到了綁定選擇的問題。我有一個JSON結構:綁定數據JSON SAPUI5(瓷磚菜單)

{ 
     "module":{ 
      "module":[ 
       { 
        "id": "0", 
        "name": "Kepesertaan" 
       }, 
       { 
        "id": "1", 
        "name": "Layanan dan Manfaat" 
       }, 
       { 
        "id": "2", 
        "name": "Investasi" 
       }, 
       { 
        "id": "3", 
        "name": "Perbendaharaan" 
       }, 
       { 
        "id": "4", 
        "name": "Aktuaria" 
       }    
      ], 

      "system":[ 
       { 
        "id": "5", 
        "name": "Pengumuman" 
       } 
      ] 
     } 
} 

控制器:

onInit: function(oEvent){ 
     var oModel = new JSONModel("metroui/module.json"); 
     this.getView().setModel(oModel); 
    }, 

    pressTileModule : function(oEvent){ 
     var sPath = oEvent.getSource().getBindingContext().getPath(); 
     var oModel = this.getView().getModel(); 
     var oContext = oModel.getProperty(sPath); 
    } 

XML:

<core:View xmlns:core="sap.ui.core" 
      xmlns:mvc="sap.ui.core.mvc" 
      xmlns="sap.m" 
      xmlns:l="sap.ui.layout" 
      xmlns:tnt="sap.tnt" 
      controllerName="metroui.MetroUI" 
      xmlns:html="http://www.w3.org/1999/xhtml"> 

      <App id="navCon"> 
       <pages> 
        <Page id="module" showHeader="false"> 
         <Panel headerText="Module"> 
          <content> 
           <l:HorizontalLayout 
            id="TileContainerModule" 
            allowWrapping="true" 
            content="{/}"> 
             <GenericTile class="sapUiTinyMarginBegin sapUiTinyMarginTop tileLayout" 
              header="{name}" press="pressTileModule"> 
              <tileContent> 
               <TileContent> 
                <content> 
                 <ImageContent description="{id}" src="sap-icon://list"/> 
                </content> 
               </TileContent> 
              </tileContent> 
             </GenericTile> 
           </l:HorizontalLayout> 
          </content> 
         </Panel>  
        </Page> 
       </pages> 
      </App>  
</core:View> 

用於結合目標模塊>模塊(來自JSON),在內容的XML文件中設置=」 {/模塊/模塊}「但我想設置內容路徑JSON 在控制器,因爲我想設置條件綁定,有時我只想綁定模塊>模塊或綁定模塊>系統(從J SON結構)。如何在加載JSON文件時綁定選擇?如果我將JSON結構放在控制器中,我可以創建新的JSON模型this.module.module或this.module.system,並在XML中設置content =「{/}」,但是當我加載文件JSON時我無法選擇綁定。如何解決這個問題呢?

感謝, 鮑比

回答

0

這是我會怎麼做。

步驟1.在的OnInit(),獲取使用 var jsonData = $.getJSON("metroui/module.json");

步驟2.檢查JSON對象如果jsonData具有 '模塊' 或使用 If ('module' in jsonData.module)

'系統'