У меня есть простая модель, которую я хочу привязать к 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");
comboBox.setModel(sheets);
var oItemTemplate = new sap.ui.core.Item();
comboBox.bindItems("/sheets", oItemTemplate)
comboBox создается в моем представлении XML:
<m:ComboBox id="selectSheet" items="{path: '/sheets'}" change="onSheetSelected">
<core:Item />
</m:ComboBox>
После установки модели или привязки элементов ничего не происходит. Я чувствую, что это простое кодирование, которое я делаю неправильно здесь. Пожалуйста, посоветуйте мне, как это сделать. ComboBox должен иметь два простых варианта: "Tabelle1" и "Tabelle2".
Обновление с предлагаемым решением
var sheetNames = JSON.parse(JSON.stringify(wb.SheetNames));
var mappedNames = _.map(sheetNames, name => { return {Name: name}});
var sheets = new sap.ui.model.json.JSONModel(mappedNames);
var comboBox = that.getView().byId("selectSheet");
var oItemTemplate = new sap.ui.core.Item({
text : '{Name}'
});
comboBox.setModel(sheets);
comboBox.bindItems("/mappedNames", oItemTemplate)
Отображаемые имена теперь выглядят следующим образом:
(2) 0: {Name: "Tabelle1"} 1: {Name: "Tabelle2"} length: 2
Вы должны предоставить шаблон, который указывает, какой элемент должен выглядеть в ComboBox
Создать привязку в 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>
text
иkey
атрибут на ваш предмет