вернуть массив элементов управления в виде агрегации в sap ui5 - PullRequest
0 голосов
/ 24 мая 2019

У меня есть сценарий использования, в котором я хочу добавить два sap.m.Input элемента управления в FormElement.Но у меня есть определенные условия, при которых эти два Input элемента управления могут быть изменены.Как я видел во многих примерах, метод .bindAggregation возвращает только один элемент управления.Могу ли я заставить его возвращать массив элементов управления?

var oInput1 = new sap.m.Input();
var oInput2 = new sap.m.Input();
var oInput3 = new sap.m.Input();

var oFormElement = new sap.ui.layout.form.FormElement();
oFormElement.bindAggregation("fields", "properties", function(sId, oContext){
    var value = oContext.getProperty("value");
    if (value > 5) {
        return [oInput1, oInput3];
    } else {
        return [oInput1, oInput2];
    }
});

Я написал этот пример, но он ничего не показывает.Как вернуть массив элементов управления в .bindAggregation.Я пытался использовать HBox в полях, но есть риск возникновения проблем с макетом.Кто-нибудь может помочь?

Заранее спасибо.

1 Ответ

0 голосов
/ 26 мая 2019

Вы не можете вернуть несколько элементов в заводской функции. Функция фабрики будет вызываться для каждого контекста и должна возвращать ровно один элемент.

Если вы не можете изменить свой сервис так, чтобы он возвращал один контекст для каждого ввода, вы можете рассмотреть возможность создания формы в JavaScript вместо использования привязки данных. Это значит

  1. запрос properties к вашим услугам
  2. переберите каждое свойство и добавьте входные данные в элемент формы, используя метод FormElement.addField.
...