Typeahead.js/Bloodhound отображают только один результат

Мой Typeahead.js/Bloodhound (0.11.1) не работает должным образом. Из длинного списка предоставленных результатов json только некоторые отображаются как предложения.

Например, если я наберу los в своем поле, я получу только Lostorf и ничего больше, когда должно отображаться 4 выбираемых элемента.

Это мой код:

HTML

<div id="remote">
<input class="typeahead" type="text">
</div>

JS

var searchablePlaces    = new Bloodhound({
    datumTokenizer      : Bloodhound.tokenizers.obj.whitespace("term"),
    queryTokenizer      : Bloodhound.tokenizers.whitespace,
    remote              : {
        url             : 'http://www.example.com/autocomplete/%QUERY/',
        wildcard        : '%QUERY',
        filter          : function(response) { return response.data.results; }
      },
    limit               : 10
});

searchablePlaces.initialize();

$('#remote .typeahead').typeahead(
{
    hint            : true,
    highlight       : true,
    minLength       : 2
},
{
    name            : 'searchable-places',
    displayKey      : "term",
    source          : searchablePlaces.ttAdapter()
})

Json

{
    "data": {
        "query": "los",
        "count": 4,
        "results": {
            "1": {
                "term": "Losanna"
            },
            "2": {
                "term": "Losone"
            },
            "3": {
                "term": "Lostallo"
            },
            "4": {
                "term": "Lostorf"
            }
        }
    }
}

Вы видите что-то не так? Спасибо!


person Dr. Gianluigi Zane Zanettini    schedule 21.05.2015    source источник
comment
Возможная причина: github.com/twitter/typeahead.js/issues/1218   -  person Dr. Gianluigi Zane Zanettini    schedule 21.05.2015


Ответы (1)


Это должно подтвердить, что проблема вызвана этой ошибкой typehaead: https://github.com/twitter/typeahead.js/issues/1218

Как было предложено joekur в отчете о проблеме, я решил заменить это:

rendered += suggestions.length;
that._append(query, suggestions.slice(0, that.limit - rendered));

С этим:

suggestions = suggestions.slice(0, that.limit - rendered);
rendered += suggestions.length;
that._append(query, suggestions);

Я пометил свой вопрос как дубликат этого: TypeAhead. js и Bloodhound показывают нечетное количество результатов Это та же проблема, я просто не могу найти ее раньше из-за разных формулировок

ХТН.

person Dr. Gianluigi Zane Zanettini    schedule 21.05.2015
comment
На самом деле мне не нужно было заменять код, только добавить limit:10 к вводу, и мои результаты начали отображаться. - person kross; 16.10.2015
comment
Спасибо! Это решило проблему. Это сводило меня с ума целых 2 часа! - person Abdo Belk; 14.02.2016
comment
Это все еще проблема, так что ваш код действительно помог. собирался сойти с ума :) - person Jay; 13.06.2016
comment
Спасибо, доктор, вы отвечаете и решаете мою проблему. - person Muhabutti; 18.11.2016
comment
Я попробовал @rosskevin на выпуске Github, и он работает хорошо. На самом деле мне не нужно было заменять код, я только добавил limit:10 к вводу, и мои результаты начали отображаться. - person trungk18; 07.03.2017
comment
У меня возникла проблема после того, как я добавил ограничение: 10. Я хотел сохранить ограничение: 10 (а не 5 по умолчанию), поэтому я сделал замену строк, чтобы рендеринг увеличивался после добавления элементов. Я не видел никаких отрицательных побочных эффектов. - person ScottFoster1000; 28.11.2018