2016-03-29 1 views
0

Я использую сетку, включающую в себя сильную форму для просмотра данных из модели JSON. Модель JSON называется mysettings. oView.setModel(this.models.mysettings, 'mysettings');привязка данных для simpleform в ui5

Сетка выглядит следующим образом

<mvc:View 
xmlns:mvc="sap.ui.core.mvc" 
xmlns:l="sap.ui.layout" 
xmlns:f="sap.ui.layout.form" 
xmlns:core="sap.ui.core" 
xmlns="sap.m"> 

<Page> 
<l:Grid 
    defaultSpan="L12 M12 S12" 
    width="auto"> 
    <l:content> 
     <f:SimpleForm 
      minWidth="1024" 
      maxContainerCols="2" 
      editable="false" 
      layout="ResponsiveGridLayout" 
      labelSpanL="3" 
      labelSpanM="3" 
      emptySpanL="4" 
      emptySpanM="4" 
      columnsL="1" 
      columnsM="1" 
      content="{mysettings>/settings/Group/0/Parameters}"> 
      <f:content> 
       <Label text="{mysettings>OneOfTheKeys}" /> 
       <Input value="{mysettings>TheCorrespondingValue}" /> 
      </f:content> 
     </f:SimpleForm> 
    </l:content> 
</l:Grid> 
</Page> 
</mvc:View> 

The модели JSON является

{ 
    "settings": { 
     "Group": [ 
      { 
       "Parameters": 
       { 
        "key1": "value1", 
        "key2": "value2", 
        "key3": "value3", 
          ..., 
          ... 
       }, 
       "Name": "TheName" 
      } 
     ] 
    } 
} 

Как можно использовать databindig, чтобы получить вид simpleform как в the linked example at the end с данным Модель JSON? Число пар ключ-значение не задано.

+0

Я не думаю, что вы можете сделать это с помощью 'SimpleForm' из-за специального способа обработки« Label »и других элементов управления; вы можете попробовать со стандартным 'sap.ui.layout.Form' и агрегировать на' FormElement', хотя – Qualiture

ответ

0

AFAIK вам нужен массив, когда вы связываете множественную агрегацию. И вместо этого вы фактически связываете простой объект.

Либо изменить модель (если это возможно) на что-то вроде

{ 
    "settings": { 
     "Group": [ 
      { 
       "Parameters": 
       [ 
        { key:"key1", value: "value1"}, 
        { key:"key2", value: "value2"}, 
        { key:"key3", value: "value3"}, 
          ..., 
          ... 
       ], 
       "Name": "TheName" 
      } 
     ] 
    } 
} 

Или использовать функцию форматирования, чтобы превратить ваш объект в массив

content="{ parts: [ 'mysettings>/settings/Group/0/Parameters' ], formatter :'.myFunctionToArray' }" 

затем привязки к

<f:content> 
    <Label text="{mysettings>key}" /> 
    <Input value="{mysettings>value}" /> 
</f:content> 
Смежные вопросы