Как получить данные из 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
(работает).
Официальная документация:
- DropdownWidget: https://doc.wikimedia.org/mediawiki-core/master/js/#!/api/OO.ui.DropdownWidget
- DropdownInputWidget: https://doc.wikimedia.org/mediawiki-core/master/js/#!/api/OO.ui.DropdownInputWidget
- ComboBoxInputWidget: https://doc.wikimedia.org/mediawiki-core/master/js/#!/api/OO.ui.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()
.