我有一个multicomboBox,我想将multicomboBox与json中的所有键绑定。我使用XML视图。 我需要multicomboBox,其值为productId,name,category,suppliername ..as follow
我的xml视图
<MultiComboBox selectionChange="handleSelectionChange" selectionFinish="handleSelectionFinish" width="300px"
items="{
path: '/Collection',
sorter: { path: 'Name' }
}">
<core:Item key="{ProductId}" text="{Name}" />
</MultiComboBox>
我的json文件
{
"Collection": [
{
"ProductId": "1",
"Name": "A",
"Category": "Projector",
"SupplierName": "Titanium",
"Description": "A very powerful projector with special features for Internet usability, USB",
"WeightMeasure": 1467,
"WeightUnit": "g",
"Price": 856.49,
"CurrencyCode": "EUR",
"Status": "Available",
"Quantity": 3,
"UoM": "PC",
"Width": 51,
"Depth": 42,
"Height": 18,
"DimUnit": "cm"
},
{
"ProductId": "2",
"Name": "B",
"Category": "Graphics Card",
"SupplierName": "Technocom",
"Description": "Gladiator MX: DDR2 RoHS 128MB Supporting 512MB Clock rate: 350 MHz Memory Clock: 533 MHz, Bus Type: PCI-Express, Memory Type: DDR2 Memory Bus: 32-bit Highlighted Features: DVI Out, TV Out , HDTV",
"WeightMeasure": 321,
"WeightUnit": "g",
"Price": 81.7,
"CurrencyCode": "EUR",
"Status": "Discontinued",
"Quantity": 10,
"UoM": "PC",
"Width": 34,
"Depth": 14,
"Height": 2,
"DimUnit": "cm"
},
{
"ProductId": "3",
"Name": "C",
"Category": "Graphics Card",
"SupplierName": "Red Point Stores",
"Description": "Hurricane GX: DDR2 RoHS 512MB Supporting 1024MB Clock rate: 550 MHz Memory Clock: 933 MHz, Bus Type: PCI-Express, Memory Type: DDR2 Memory Bus: 64-bit Highlighted Features: DVI Out, TV-In, TV-Out, HDTV",
"WeightMeasure": 588,
"WeightUnit": "g",
"Price": 219,
"CurrencyCode": "EUR",
"Status": "Out of Stock",
"Quantity": 25,
"UoM": "PC",
"Width": 34,
"Depth": 14,
"Height": 2,
"DimUnit": "cm"
},
{
"ProductId": "4",
"Name": "D",
"Category": "Accessory",
"SupplierName": "Technocom",
"Description": "Web camera, color, High-Speed USB",
"WeightMeasure": 700,
"WeightUnit": "g",
"Price": 59,
"CurrencyCode": "EUR",
"Status": "Available",
"Quantity": 22,
"UoM": "PC",
"Width": 18,
"Depth": 19,
"Height": 21,
"DimUnit": "cm"
},
{
"ProductId": "5",
"Name": "E",
"Category": "Accessory",
"SupplierName": "Technocom",
"Description": "Lock for Monitor",
"WeightMeasure": 40,
"WeightUnit": "g",
"Price": 13.49,
"CurrencyCode": "EUR",
"Status": "Available",
"Quantity": 30,
"UoM": "PC",
"Width": 11,
"Depth": 11,
"Height": 3,
"DimUnit": "cm"
}
]
}
答案 0 :(得分:1)
我不认为可以在不创建新数据对象的情况下执行您要求的操作,其中原始对象的键将变为值。
在这里我将如何做(虽然我不太多使用xml视图):
<core:View
controllerName="local.controller"
xmlns:mvc="sap.ui.core.mvc"
xmlns:core="sap.ui.core"
xmlns="sap.m">
<MultiComboBox width="300px"
items="{
path: '/data',
}">
<core:Item text="{value}" />
</MultiComboBox>
</core:View>
在控制器中我们制作一个新的对象和模型:
var oModelData={};
oModelData.data = [];
for(var key in oData.Collection[0]){
var oObj = {};
oObj.value = key;
oModelData.data.push(oObj);
}
oView.setModel(new sap.ui.model.json.JSONModel(oModelData));
这是一个有效的JSBIN示例:LINK
答案 1 :(得分:0)
也许是错过了重点,但您发布的原始代码应该可以正常工作。你想要的是什么?