Как получить данные из OO.ui.DropdownWidget?

Учитывая пользовательский интерфейс с раскрывающимися меню, созданный с помощью OO.ui, позволяющий выбирать человеческие языки, связанные с их значением Викиданных:

        languagesA = new OO.ui.DropdownWidget({
    id: 'lqg-languagesA',
        label: 'Source language',
        menu: { items: [
      new OO.ui.MenuOptionWidget({ data: 'Q113', label: 'cmn - Mandarin Chinese' }),
      new OO.ui.MenuOptionWidget({ data: 'Q34',  label: 'mar - Marathi' }),
      new OO.ui.MenuOptionWidget({ data: 'Q209',  label: 'bre - Breton' })
    ]
 },
})

languagesA.getData() возвращается undefined.

languagesA.getValue() перерывы.

В: После того, как возможность выбрана пользователем, как получить значение данных?

Прототип:

  • https://jsfiddle.net/cqpr0zd3/1/ - содержит A) (не удается получить значение), B) DropdownInputWidget (работает) и C) ComboBoxInputWidget (работает).

Официальная документация:

1 ответ

DropdownWidgetэто более широкая оболочка для меню, которая может содержать различные типы контента и поэтому не собирает данные и не имеет метода. Вы должны погрузиться, чтобы добраться до выбранного варианта, используя

      languagesA.getMenu().items.filter(item=> item.selected==true )[0].data)

Альтернатива: в конце концов я принял ComboBoxInput()с лучше настроенной фильтрацией.

      var baseLanguages = [
  { data: 'Q113', label: 'cmn - Mandarin Chinese' },
  { data: 'Q34',  label: 'mar - Marathi' },
  { data: 'Q209',  label: 'bre - Breton' }
];
var dropdown = new OO.ui.ComboBoxInputWidget({ // ComboBox
  id: 'lqg-languagesC',
  placeholder : 'Source language',
  options: baseLanguages,
  menu: {   filterFromInput: true, filterMode : 'substring' }
  // value: 'Q34',
});

Которые добавляют элегантные функции и имеют встроенный .getValue().

Другие вопросы по тегам