ограничить до 1 предложения select2, если существует 2 или более одинаковых результатов

У меня есть этот json в файле /api/searchs:

[{"id":"513dbb61a61654a845000005","text":"ingeniero agrónomo"},{"id":"513a11d4a6165411b2000008","text":"ingeniero agrónomo"}]

Я использую select2 для отображения результатов.

Это моя настройка select2:

$('#query_txt').select2
    width: 'resolve'
    minimumInputLength: 3
    tags: false
    showSearchBox: true
    maximumSelectionSize: 1
    closeOnSelect: true
    multiple: false
    ajax:
      url: "/api/searches"
      quietMillis: 100
      dataType: 'json'
      data: (term, page) -> {q: term}
      results: (data, page) ->
        results: data

Если я введу свой ввод, слово ingeniero agrónomo select2 предложит два результата, которые вы можете увидеть на следующем изображении:

введите здесь описание изображения

Я хочу, если существует 2 или более результатов, равных в json, ограничить до 1 предложений select2

Как я могу ограничить до 1 предложения select2, если существует 2 или более одинаковых результатов?


person hyperrjas    schedule 15.03.2013    source источник


Ответы (1)


Что вам нужно сделать, так это обновить функцию результатов, чтобы обработать выведенный массив из функции данных и удалить повторяющиеся тексты, непроверенный код, но что-то вроде этого должно сделать это:

$('#query_txt').select2
    width: 'resolve'
    minimumInputLength: 3
    tags: false
    showSearchBox: true
    maximumSelectionSize: 1
    closeOnSelect: true
    multiple: false
    ajax:
      url: "/api/searches"
      quietMillis: 100
      dataType: 'json'
      data: (term, page) -> {q: term}
      results: (data, page) ->
        indexes = []
        uniques = []
        i = 0
        while i < data.length
          if indexes[data[i].text] is `undefined`
            indexes[data[i].text] = "defined"
            uniques.push
              id: data[i].text
              text: data[i].text
          i++
        results: uniques
person pedromarce    schedule 15.03.2013
comment
Я отредактировал ваш ответ на coffeescript и исправил синтаксическую ошибку. Извините, но это решение не работает, я не получаю предложений по этому решению. - person hyperrjas; 15.03.2013
comment
Да, возможно, на этот раз для select2 может потребоваться идентификатор и текст в объекте вывода. - person pedromarce; 15.03.2013
comment
Спасибо, но этот подход не работает... Я не получаю предложений :(. - person hyperrjas; 15.03.2013
comment
Я протестировал это решение, вам нужно будет снова перевести его на кофескрипт, извините, я его не использовал, но это должно быть в порядке. Мой тест в jsfiddle, jsfiddle.net/BgUzc - person pedromarce; 15.03.2013
comment
Спасибо, теперь работает нормально :). Я отредактировал ваш вопрос на кофескрипт. Благодарю вас! - person hyperrjas; 15.03.2013