从 JSON 数据填充列表

Populate a list from JSON data

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

如果列表如下所示:

<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);

输出:

假设您的列表是这样的:

<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

由于您没有显示您的列表定义,我只能专注于您问题中的数据,并且为了这个问题假设您正在谈论列表控件,例如 sap.m 库,例如。

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

所以这变成了一个 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' } ]

然后就可以绑定了。

如果您需要进一步的帮助来完成实际的绑定,您需要在您的问题上付出更多的努力并提供您正在使用的控件定义。给我们看代码,帮助我们帮助你。