SAPui5 создать простой sap.m.ComboBox - PullRequest
0 голосов
/ 24 октября 2018

У меня есть простая модель, которую я хочу привязать к 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

1 Ответ

0 голосов
/ 24 октября 2018

Вы должны предоставить шаблон, который определяет, как должен выглядеть элемент в 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>
...