从JSON数据填充列表

时间:2015-05-07 07:58:59

标签: json list sapui5

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

2 个答案:

答案 0 :(得分: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' } ]

然后你可以绑定它。

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

答案 1 :(得分: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