Подтвердить что ты не робот

Typeahead всегда показывает только 5 предложений максимум

У меня есть код ниже, используя Typeahead.js для предложений. У меня нет серьезных проблем с кодом, так как он отлично работает.

Незначительная проблема, с которой я сталкиваюсь, заключается в том, что в любой момент времени я вижу только 5 предложений, хотя есть более 5 предложений с удаленного URL.

var isearch = new Bloodhound({
    datumTokenizer: function(d) { 
         return Bloodhound.tokenizers.whitespace(d.value); 
    },
    queryTokenizer: Bloodhound.tokenizers.whitespace,
    remote: "http://localhost/search/get-data/%QUERY"
});

isearch.initialize();  

$("#search_box .typeahead").typeahead(null,{ name: "isearch",
    displayKey: "value",
    source: isearch.ttAdapter(),
    templates: {
         suggestion: Handlebars.compile("{{value}}")
    }
});

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

4b9b3361

Ответ 1

В версии Typeahead 0.11.1:

Укажите "предел" во время создания объекта typeahead, чтобы задать количество отображаемых предложений, например

// Instantiate the Typeahead UI
$('.typeahead').typeahead(null, {
 limit: 10, // This controls the number of suggestions displayed
 displayKey: 'value',
 source: movies
});

Смотрите рабочий пример здесь:

http://jsfiddle.net/Fresh/ps4w42t4/


В версии Typeahead 0.10.4.

Механизм предложений Bloodhound имеет значение по умолчанию, равное пяти, для параметра "лимит" (т.е. максимальное количество предложений, возвращаемых из Bloodhound # get)

Вы можете увеличить лимит, указав желаемое значение при создании экземпляра объекта Bloodhound. Например, чтобы указать ограничение в 10:

var isearch = new Bloodhound({
 datumTokenizer: function(d) { 
     return Bloodhound.tokenizers.whitespace(d.value); 
 },
 queryTokenizer: Bloodhound.tokenizers.whitespace,
 remote: "http://localhost/search/get-data/%QUERY",
 limit: 10
});

Пример экземпляра Typeahead, где ограничение установлено в 10, можно найти здесь:

http://jsfiddle.net/Fresh/w03a28h9/

Ответ 2

В моем случае опция "limit" работала, но по-другому. Я должен был поставить опцию ограничения на typeahead вместо Bloodhound. Я отправляю свое дело, чтобы оно могло помочь кому-то.

bloodhoundSuggestionEngine = new Bloodhound({
datumTokenizer : function(d) {
return Bloodhound.tokenizers.whitespace(d.key);
},
queryTokenizer : Bloodhound.tokenizers.whitespace,
local : myOptions
});

$("#myinputbox").typeahead({
minLength : 3,
highlight : true
}, {
displayKey : 'key',
source : bloodhoundSuggestionEngine.ttAdapter(),
limit: 10
});

Ответ 3

Помимо добавления ограничения на создание экземпляра Bloodhound, как было предложено @Fresh, я сделал следующий стиль в CSS, чтобы получить желаемый результат.

.tt-suggestions {
  min-height: 300px;
  max-height: 400px;  
  overflow-y: auto;
}

Что я сделал, так это заставить контейнер до 400 пикселей, чтобы получить полосу прокрутки, когда есть больше результатов. Мне нужен этот подход, потому что я не хотел, чтобы экран занимал больше места. Это будет работать, даже если есть 100 результатов.. и не будет блокировать экран.

Ответ 4

В версии Typeahead 0.11.1:

Укажите "limit" во время создания объекта typeahead, чтобы задать количество отображаемых предложений, но убедитесь, что оно на один меньше, чем максимальное число, которое возвращает ваш источник.

// Instantiate the Typeahead UI
$('.typeahead').typeahead(null, {
    limit: 9, // one less than your return value. This controls the number of suggestions displayed
    displayKey: 'value',
    source: movies
});

см https://github.com/twitter/typeahead.js/issues/1201

Ответ 5

Другим способом может быть изменение значений по умолчанию в классе Typeahead.

$.fn.typeahead.defaults = { ... items: 8, ...}

к

items: 'all'

Ответ 6

Ответ @Atul определенно помог мне, но у меня была другая проблема с ищейкой. Я использовал пульт дистанционного управления, и я не получил бы результатов, которые, как я знаю, будут служить. Это было потому, что он нашел что-то достаточно близко в кешене и не спрашивал пульт для данных. Поэтому, нажимая опцию sufficient на ищейку от значения по умолчанию до 100, она всегда просит пульт для получения большего количества данных.