2016-02-29 4 views
-1

Я действительно новичок в мире SAPUI5. Я пытаюсь создать FIORI-приложение, но я стараюсь правильно привязать свои данные.SAPUI5 - Сущность с дочерним объектом

Я создаю SplitApp. На главном экране у вас есть список тренингов, из которых вы можете отображать детали. Теперь я хочу показать список описаний обучения на странице detailpage. Моя модель JSON выглядит следующим образом:

[{ 
    "Objid": "50000001", 
    "Name": "Word für Anfänger", 
    "Description" : [{ 
     "Title" : "Trainingsinhalt", 
     "Content" : "Dies ist ein Trainingsinhalt" 
    }, { 
     "Title" : "Hinweise", 
     "Content" : "Meine Hinweise" 
    }] 
}, { 
    "Objid": "50000002", 
    "Name": "Excel für Anfänger", 
    "Description" : [{ 
     "Title" : "Trainingsinhalt", 
     "Content" : "Dies ist ein Trainingsinhalt" 
    }, { 
     "Title" : "Hinweise", 
     "Content" : "Meine Hinweise" 
    }] 
}] 

Я не уверен, если это правильный путь, чтобы создать объект ниже объекта.

Может кто-нибудь мне помочь?

+0

Структура данных представляется разумной для меня. Если у вас есть какие-то конкретные проблемы, пожалуйста, покажите, что вы пробовали до сих пор. – hirse

ответ

0

Ваша структура работает хорошо. В случае, если вы застряли:

Загрузите данные в именованных модели JSON (например, «обучение»)

var trainingModel = new sap.ui.model.json.JSONModel(yourData); 
oView.setModel(trainingModel , "training"); 

Bind своего список в вашем основном виде на соответствующее поле (например, название).

<items> 
    <ObjectListItem 
     type="{device>/listItemType}" 
     press="onPress" 
     title="{training>Name}" 
     number="" 
     numberUnit=""> 
    </ObjectListItem> 
</items> 

При наведении на ваш подробный вид введите идентификатор имени, выбранного в вашем контроллере подробностей.

onRouteMatched : function(oEvent) { 
     var oParameters1 = oEvent.getParameters(); 
     var sId1 = oParameters1.arguments.detailId; 

связать ваш взгляд детали к этому элементу ваших данных:

var sPath = "training>/" + sId1 + "/"; 
    this.getView().bindElement(sPath); 

А потом добить связывание вашей (в качестве примера) полой таблицы для двух дочерних полого описания.

<Table id="idProductsTable" 
     inset="false" 
     items="{ 
     path: 'training>Description' 
     }"> 
    <columns> 
     <Column mergeDuplicates="true" 
       width="40%"> 
      <Text text="Title" /> 
     </Column> 
     <Column mergeDuplicates="true" 
       width="40%"> 
      <Text text="Content" /> 
     </Column> 
     </columns> 
    <items> 
     <ColumnListItem> 
      <cells> 
       <Text 
         text="{training>Title}" /> 
       <Text 
         text="{training>Content}" /> 
      </cells> 
     </ColumnListItem> 
    </items> 
</Table> 

И это все - ваши данные в его нынешнем виде очень полезны.

Смежные вопросы