2016-03-29 59 views
0

我正在使用包含sinpleform的网格查看来自JSON模型的数据。 JSON模型被命名为mysettings。 oView.setModel(this.models.mysettings, 'mysettings');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> 

的JSON模式

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

怎么可能在the linked example at the end使用databindig得到simpleform的观点类似与给定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>