Javascript SAPui5创建简单的sap.m.ComboBox
我有一个简单的模型,我想绑定到sap.m.ComboBox。数据如下所示:Javascript SAPui5创建简单的sap.m.ComboBox,javascript,xml,data-binding,combobox,sapui5,Javascript,Xml,Data Binding,Combobox,Sapui5,我有一个简单的模型,我想绑定到sap.m.ComboBox。数据如下所示: (2) ["Tabelle1", "Tabelle2"] 0: "Tabelle1" 1: "Tabelle2" 我所做的是: ... some unimportant stuff before... var sheets = new sap.ui.model.json.JSONModel(sheetNames); var comboBox = that.getView().byId("selectSheet"
(2) ["Tabelle1", "Tabelle2"]
0: "Tabelle1"
1: "Tabelle2"
我所做的是:
... some unimportant stuff before...
var sheets = new sap.ui.model.json.JSONModel(sheetNames);
var comboBox = that.getView().byId("selectSheet");
comboBox.setModel(sheets);
var oItemTemplate = new sap.ui.core.Item();
comboBox.bindItems("/sheets", oItemTemplate)
在我的XML视图中创建组合框:
<m:ComboBox id="selectSheet" items="{path: '/sheets'}" change="onSheetSelected">
<core:Item />
</m:ComboBox>
映射名称现在如下所示:
(2) ["Tabelle1", "Tabelle2"]
0: "Tabelle1"
1: "Tabelle2"
您必须提供一个模板,用于指定组合框中的项的外观 在Javascript中创建绑定: 控制者:
var sheetNames = {myList : [{ Name : "Tabelle1"}, {Name : "Tabelle2"}]};
var sheets = new sap.ui.model.json.JSONModel(sheetNames);
var comboBox = that.getView().byId("selectSheet");
var oItemTemplate = new sap.ui.core.Item({
text : '{Name}' // here goes your binding for the property "Name" of your item
});
comboBox.setModel(sheets);
comboBox.bindItems("/myList", oItemTemplate);
视图:
在XML中创建绑定:
控制器:
var sheetNames = {myList : [{ Name : "Tabelle1"}, {Name : "Tabelle2"}]};
var sheets = new sap.ui.model.json.JSONModel(sheetNames);
var comboBox = that.getView().byId("selectSheet");
comboBox.setModel(sheets);
视图:
<m:ComboBox id="selectSheet" items="{path: '/myList'}">
<core:Item text="{Name}"/> </m:ComboBox>
尝试将文本
和键
属性添加到您的项目中,也不要考虑js部分,将您的模型设置到视图中,然后在xml中进行绑定,这对readabilty@Erch但我的模型中没有任何“文本”或“关键”部分。没有对象,只有字符串。。我尝试了使用XML的方法,但是“sheets”模型没有在nit上设置,因此我的视图似乎没有获得数据..文本和键不是模型的属性,它们是控件的属性。。。。我的名字里没有“名字”。。那么我该如何访问它,但您需要列表中的对象。您可以在绑定之前映射它们:var list=[“Tabelle1”,“Tabelle2”];var mappedList=list.map(函数(tableName){return{Name:tableName};});好的,我明白了!我在问题中添加了一个更新,以显示我如何尝试实现您的解决方案,但它仍然没有绑定任何数据。。似乎很奇怪:您在模型中设置的其他数据是一个列表。但是你必须设置一个对象。如上面的例子所示。有一个属性为“myList”的对象,其中包含列表作为值。绑定中的绝对路径指向此列表-->comboBox.bindItems(“/myList”,oItemTemplate),在您的情况下,它将是:var mappedNames=uU9;.map(sheetNames,name=>{return{name:name});var data={“mappedNames”:mappedNames};var sheets=new sap.ui.model.json.JSONModel(数据);
<m:ComboBox id="selectSheet" items="{path: '/myList'}">
<core:Item text="{Name}"/> </m:ComboBox>