Привязать выбранные элементы Multicombobox в пользовательском элементе управления UI5 - PullRequest
0 голосов
/ 27 мая 2020

Я бы хотел привязать selectedItems, которые поступают из JsonModel в контроллере, к пользовательскому элементу управления.

Пользовательский элемент управления

sap.ui.define([
  'sap/ui/core/Control',
  'sap/m/MultiComboBox',
  ], function (Control, MultiComboBox) {
  return Control.extend('drex.control.TokenizedMultiComboBox', {
    metadata: {
      properties: {
        selectedKeys: { type: 'string[]', defaultValue: [] }
      },
      aggregations: {
        combo: { type: 'sap.m.MultiComboBox', multiple: false },
      },
    },

    init: function (allItems) {
      Control.prototype.init.apply(this, arguments);
    },

    onAfterRendering: function() {
      const combo = this.getAggregation('combo');
      const selectedKeys = this.getSelectedKeys();
      if (selectedKeys.length) {
        combo.setSelectedKeys([selectedKeys]);
      }
    },

    renderer: function (rm, oControl) {
      rm.write('<div');
      rm.writeControlData(oControl);
      rm.write('>');
      rm.write('<div>');
      rm.renderControl(oControl.getAggregation('combo'));
      rm.write('</div>');
      rm.write('</div>');
    },
  })
})

XML

<drex:TokenizedMultiComboBox
    selectedKeys="{selectedItems>/disease}" />

где selectedItems>/disease определено в контроллере:

this.getView().setModel(new JSONModel(), 'selectedItems');

Проблема в том, что этот Multicombobox в настраиваемом элементе управления не включает никаких значений selectedItems.

1 Ответ

0 голосов
/ 28 мая 2020

Хорошо. Я нашел ответ благодаря Как мне установить выбранные элементы в sapui5 MultiComboBox?

...
metadata: {
      properties: {
        selectedKeys: { type: 'string', defaultValue: '' }
      },
      aggregations: {
        combo: { type: 'sap.m.MultiComboBox', multiple: false },
      },
    },

onAfterRendering: function() {
      const combo = this.getAggregation('combo');
      const selectedKeys = this.getSelectedKeys();
      combo.bindProperty('selectedKeys', selectedKeys);
    }
...

Теперь я передаю путь к модели в виде строки. XML

<drex:TokenizedMultiComboBox
    selectedKeys="selectedItems>/disease" />

Надеюсь, это правильный подход ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...