SAPui5 создать простой sap.m.ComboBox

1

У меня есть простая модель, которую я хочу привязать к 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
  • 0
    попробуйте добавить text и key атрибут на ваш предмет
  • 0
    также просто забудьте о части js, установите вашу модель в представление, затем сделайте привязку в xml, это лучше для readabilty
Показать ещё 2 комментария
Теги:
data-binding
combobox
sapui5

1 ответ

1
Лучший ответ

Вы должны предоставить шаблон, который указывает, какой элемент должен выглядеть в 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>
  • 0
    в моем SheetNames нет "имени". Так как бы я получить доступ к этому
  • 0
    но вам нужны объекты в вашем списке. вы можете отобразить их перед выполнением привязки: var list = ["Tabelle1", "Tabelle2"]; var mappedList = list.map (function (tableName) {return {Name: tableName};});
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню