jquery typeahead set stati c первый элемент и затем заказ как c остальные - PullRequest
0 голосов
/ 22 января 2020

У меня есть проблема, которую я не могу понять. Я использую jquery typeahead из runningcoder (http://www.runningcoder.org/jquerytypeahead/), и я пытаюсь установить первый элемент stati c, который всегда является первым, а затем другие элементы как c заказ.

Мой код следующий:

$.typeahead({
        input: ".js-typeahead",
        minLength: 0,
        maxItem: false,
        order: "asc",
        emptyTemplate: '<span class="text-muted">Nessun paese corrisponde a <strong>{{query}}</strong></span>',
        searchOnFocus: true,
        source: {
            groupName: {
                // Ajax Request
                ajax: {
                    url: "../wp-json/shipping-data/available-countries",
                    callback: {
                        done: function (data) {
                            $.each(data, function (index, value) {
                                data[index] = SUtils.lowerCaseAllWordsExceptFirstLetters(value);
                            });
                            return data;
                        }
                    }
                }
            }
        },
        debug: true
    });

Я пытаюсь указать страну Италия в качестве первого предложенного элемента в списке, но не могу этого добиться поскольку директива order: as c переупорядочивает массив данных. Как я могу получить «заказ: как c», но с Италией в качестве первого элемента в списке?

Спасибо

1 Ответ

1 голос
/ 22 января 2020

Поскольку у меня нет полной реализации, это мое предположение из вашего фрагмента. В основном вам нужно будет найти элемент (в данном случае с Italy), затем поместить его в первый из массива и заполнить массив другими элементами. Как то так:

done: function (data) {
  const sortedData = $.each(data, function (index, value) {
    data[index] = SUtils.lowerCaseAllWordsExceptFirstLetters(value);
  });
  sortedData = [
    sortedData.find(item => item == 'Italy'), //find item which is 'Italy'
    ...sortedData.filter(item => item != 'Italy') //spread operation to fill the array with the rest of the items which are not `Italy`
  ];
  return sortedData;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...