2015-05-07 207 views
-3

我在sapui5中使用javascript。我有JSON数据为{0:"A",1:"B",2:"C"}。我想用数据填充一个列表。我怎样才能做到这一点?从JSON数据填充列表

+0

你想单独列出键和值 –

+3

您的预期产出是多少?到目前为止你有什么努力去实现它? – ralfstx

+0

我希望字符串A,B,C出现在我的列表中。由于没有键值对,我发现很难将它绑定到列表 –

回答

0

如果名单是象下面这样:

<List id="listId" items="{/}"> 
    <StandardListItem title="{0}"/> 
</List> 

var oYourData = { 
    0: "A", 
    1: "B", 
    2: "C" 
}; 
var oModel = new sap.ui.model.json.JSONModel(oYourData); 
this.getView().byId("listId").setModel(oModel); 

输出:

sample list with only title

假设你的名单如下:

<mvc:View 
    controllerName="sap.m.sample.ListCounter.List" 
    xmlns:mvc="sap.ui.core.mvc" 
    xmlns="sap.m"> 
    <List 
    headerText="Products" 
    items="{ 
     path: '/ProductCollection' 
    }" > 
    <StandardListItem 
     title="{Name}" 
     counter="{Quantity}"/> 
    </List> 
</mvc:View> 

样品的OData应该是这样的:

var oData = { 
    "ProductCollection": [ 
     { 
      "ProductId": "1239102", 
      "Name": "Power Projector 4713", 
      "Quantity": 3, 
     }, 
     { 
      "ProductId": "2212-121-828", 
      "Name": "Gladiator MX", 
      "Quantity": 10, 
     }, 
     { 
      "ProductId": "K47322.1", 
      "Name": "Hurricane GX", 
      "Quantity": 25, 
     }, 
     { 
      "ProductId": "22134T", 
      "Name": "Webcam", 
      "Category": "Accessory", 
      "Quantity": 22, 
     }, 
     { 
      "ProductId": "P1239823", 
      "Name": "Monitor Locking Cable", 
      "Category": "Accessory", 
      "Quantity": 30, 
     } 
    ] 
} 

了解更多有关模型和数据绑定here

1

当你还没有表现出你的列表定义,我只能集中精力在你的问题中的数据,并例如,为了这个问题,假定你正在谈论一个List控件,比如说sap.m库。

您将面临的问题是,您的数据所具有的结构与绑定到聚合(例如List控件的项目聚合)时所使用的预期结构不符。你需要一个数组,而不是一个对象。

因此,这成为一个JavaScript数据问题。要转换结构(我们假设是在一个叫MDATA变量)到更适合的聚合结合的东西,你可以做这样的事情:

Object.keys(mData).map(function(k, i) { return { key: k, value: mData[k] }; })

,这将给你一个这样的数组:

[ { key: '0', value: 'A' }, { key: '1', value: 'B' }, { key: '2', value: 'C' } ]

然后,您可以绑定这一点。

如果您需要进一步的帮助来进行实际的绑定,您需要在您的问题中多做一点努力并提供您正在使用的控件定义。向我们显示代码,帮助我们帮助你。