2015-05-07 424 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' } ]

然後,您可以綁定這一點。

如果您需要進一步的幫助來進行實際的綁定,您需要在您的問題中多做一點努力並提供您正在使用的控件定義。向我們顯示代碼,幫助我們幫助你。