Мне недавно пришлось создать поле for, которое позволяет мне выбирать элементы в выпадающем списке. Прямо сейчас выпадающий список автоматически отменяет выбор элемента, если он уже выбран. Тем не менее, я хочу иметь возможность выбирать элемент столько раз, сколько захочу. Я видел, как это работало в предыдущих версиях, но я думаю, что это было скорее ошибкой. Использование последней версии ext js 5.
Я попытался расширить обычный выпадающий список и расширить выбор моделей.
Методы «onNavigate» или «onSelectChange» в initComponent, но любой журнал внутри этого не работает.
Ext.define('MyApp.MultiSelect', {
extend: 'Ext.form.field.Tag',
alias: 'widget.field-multiselect',
selectOnFocus: false,
delimiter: '->',
editable: false,
renderField: 'name',
displayField: 'name',
valueField: 'id',
multiSelect: true,
allowDeselect: false,
listConfig: {
getInnerTpl: function () {
return [
'<tpl>' +
'<span>{name:htmlEncode}</span>' +
'</tpl>'
];
}
},
initComponent: function () {
var me = this;
this.callParent(arguments);
me.selectionModel = new Ext.selection.Model({
mode: 'MULTI',
onNavigate: function(e) {
console.log('nothing here');
},
onSelectChange: function(record, isSelected, suppressEvent,
commitFn) {
// This only triggers when I click a tag, not when I click
// the boundlist
console.trace('nothing here');
}
me.selectionModel.bindStore(me.valueStore, true);
if (me.multiSelect && !Ext.isEmpty(me.delimiter)) {
me.delimiterEndingRegexp = new RegExp(String(me.delimiter).replace(/[$%()*+.?\[\\\]{|}]/g, "\\$&") + "$");
}
Я также пытался создать собственную модель выбора, но она также не работала для связанного списка.
Теперь, как я могу заархивировать назначение нескольких тегов вместо того, чтобы отменить выбор? Кроме того, allowDeselect, похоже, ничего не делает.
E: Я заметил, что модель выбора не для ограниченного списка, поэтому мне пришлось изменить selectionModel в функции onBindStore. Тем не менее, все еще кажется сложным позволить этой модели принимать несколько значений.