Как включить клавишу Shift - множественный выбор в основном списке выбора?

Я использую список выбора Prime ng из Prime ng API: https://www.primefaces.org/primeng/#/picklist

Одна из проблем, с которыми я здесь сталкиваюсь, заключается в том, что список выбора не поддерживает множественный выбор.

Пример множественного выбора: http://jsfiddle.net/bMgpc/170/

В скрипке указан код:

$(document).ready(function() {
    $('ul').multiSelect({
        unselectOn: 'body',
        keepSelection: false,
    });
});

Как включить множественный выбор с помощью клавиши Shift, где я могу выполнить выбор диапазона?

Любая помощь приветствуется...


person The Dark Knight    schedule 09.02.2018    source источник
comment
если вы можете включить множественный выбор с помощью клавиши Shift, проверьте код. Просто в функции onItemClick проверяем, не нажата ли эта хрень клавиша, и сохраняем в двух переменных индекс. Если у вас есть два индекса, выберите все элементы между этим индексом   -  person Eliseo    schedule 09.02.2018
comment
@Eliseo Не то чтобы я против улучшения кода, просто то, над чем я сейчас работаю, очень чувствительно ко времени. Так что либо я использую список выбора, либо использую какой-то другой плагин, чтобы добраться туда, куда я хочу.   -  person The Dark Knight    schedule 09.02.2018


Ответы (1)


Во-первых, использование JQuery с Angular — это антишаблон. Поэтому избегайте этого и не используйте решение, предоставленное этой скрипкой.

Во-вторых, из документации:

Множественный выбор

Несколько элементов можно выбрать с помощью metaKey или переключать по отдельности в зависимости от значения свойства metaKeySelection, которое по умолчанию равно true. На сенсорных устройствах metaKeySelection отключается автоматически.

По-видимому, множественный выбор включен по умолчанию.

У вас ничего не получится, потому что метаклавиша на самом деле Ctrl, а не Shift :)

Вы также можете использовать [metaKeySelection]="false", чтобы ваши пользователи могли напрямую нажимать на элементы, чтобы выбирать их, без необходимости использования метаключа (если я правильно понял).

person Community    schedule 09.02.2018
comment
1› Да.. Я знаю, что нельзя использовать jquery. Я предоставил пример jquery, чтобы зрители поняли, о чем я говорю. 2> Мне также известно, что мета-клавиша здесь относится к CTRL-Key, а не к shift. Вот почему я задал вопрос, чтобы узнать, есть ли здесь способ использования мультиселектора сдвига. - person The Dark Knight; 09.02.2018
comment
Ну тогда вы должны были быть более конкретными в своем вопросе! Я не думаю, что вы можете сделать это изначально. Но вы, вероятно, можете написать некоторую логику вокруг события onSourceSelect: получить событие мыши (чтобы узнать, нажат ли сдвиг), получить последний выбранный элемент, если нажат сдвиг, выбрать все элементы от ранее выбранного элемента до вновь выбранного элемента. Если вы можете предоставить песочницу прайминга, я мог бы попытаться сделать это с вами! - person ; 09.02.2018