Как смешать Select 2 Загрузка удаленных данных с начальными выборками

https://select2.github.io/examples.html#data-ajax

Для select2 я хочу:

  1. Перечислите некоторые начальные выборки, поэтому для небольшого списка мы можем выбрать его напрямую.
  2. Удаленный поиск для длинных/больше вариантов.

Но, похоже, я не могу указать параметры ajax и data одновременно.

Любое предложение? Спасибо.


добавлен фрагмент кода

function installShopSelect2() {
    var url = "/ajax/brandEnterprise/findShops.mapi";
    "use strict";
    $('#shopid').select2({
        ajax: {
            type: "GET",
            url: url,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            delay: 250,
            //async: false,
            data: function (params) {
                return {
                    keyword: params.term,
                    besId: selectedBes,
                    page: params.page
                };
            },
            processResults: function (data, params) {
                // parse the results into the format expected by Select2
                // since we are using custom formatting functions we do not need to
                // alter the remote JSON data, except to indicate that infinite
                // scrolling can be used
                params.page = params.page || 1;

                return {
                    results: data,
                    pagination: {
                        more: (params.page * 30) < data.total_count
                    }
                };
            },
            cache: true
        },
        escapeMarkup: function (markup) {
            return markup;
        },
        //data: $.getJSON(url, {besId: selectedBes, keyword: ''}, function (data) {
        //    return {results: data};
        //}),
        placeholder: "--Please search--",
        minimumInputLength: 2,
        allowClear: true
    });
}

person Raymond    schedule 29.01.2016    source источник
comment
вы пытались установить allowClear: false ?   -  person Bindrid    schedule 29.01.2016
comment
Нет, мне это тоже не помогло   -  person Bindrid    schedule 29.01.2016
comment
Доступ к удаленным данным в большинстве случаев будет достаточно быстрым, поэтому я не понимаю, почему вы пытаетесь запустить насос, который я скопировал, и запустил их образец на своем устройстве, подключившись к их источнику данных и почти сразу получив данные.   -  person Bindrid    schedule 01.02.2016
comment
Я добавил фрагмент кода. Список пуст, если пользователь не набрал хотя бы два символа. ПЕРВЫЙ: Требование может быть тривиальным для таких языков, как английский. Но это очень беспокоит такие языки, как китайский. Пользователь должен использовать IME (редактор метода ввода) для ввода двух китайских символов, что составляет более двух нажатий клавиш. Если нам повезет, мы можем выбрать элемент из исходного списка напрямую, особенно для короткого списка. ВТОРОЕ: Первоначальный пустой список может ввести пользователя в заблуждение. Они будут рычать, Ничего, Ничего, ... и попытаются убить меня.   -  person Raymond    schedule 02.02.2016


Ответы (1)


Способ, которым я решил эту проблему, заключается в установке minimumInputLength = 0, написании собственного транспортера ajax, который проверяет длину поискового запроса, когда он равен 0, я вызываю обратный вызов успеха с фиксированными значениями по умолчанию, в противном случае, если больше 0, я просто делаю вызов ajax и возврат ответа.

person Marcel Ueno    schedule 05.01.2018
comment
Можете ли вы вставить пример кода? Похоже, это именно то, что мне нужно. - person Victorio Berra; 05.06.2018