Typeahead JS "пульт всегда используется"
Я понимаю, что дистанционное использование должно использоваться только тогда, когда результаты предварительной выборки не превышают установленный предел. Я установил лимит в 1, и у предварительной выборки более одной записи. Тем не менее он использует удаленный для извлечения данных и в конечном итоге показывает только 1 результат.
initialise_quick_search: function () {
var building_data = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('building_name'),
queryTokenizer: Bloodhound.tokenizers.nonword,
prefetch: {
url: '/quick_search/quick_search_results?search_buildings=1',
//cache: false
},
remote: {
url: '/quick_search/quick_search_results?search_buildings=1&query=%QUERY',
wildcard: '%QUERY',
cache: false
}
});
building_data.initialize();
var $quick_search = $('#quick_search');
$quick_search.typeahead({
highlight: true,
hint: false,
minLength: 2,
},
{
name: 'buildings',
display: 'building_name',
source: building_data,
limit: 1,
templates: {
header: 'Buildings',
suggestion: function (data) {
return '<p><a target="_blank" href=' + data.href + '>' + data.text + '</a></p>'
}
}
}
);
$quick_search.bind('typeahead:close', function (ev, suggestion) {
$quick_search.val('');
$quick_search.typeahead('close');
});
$quick_search.bind('typeahead:select', function (ev, suggestion) {
window.open(suggestion.href, '_blank');
});
}
1 ответ
Если кто-то хочет, чтобы удаленный запуск не выполнялся, если в prefetch есть хотя бы одна запись, измените достаточное значение в приведенном ниже фрагменте в файле typeahead.bundle.js.
var oParser = function() {
"use strict";
return function parse(o) {
var defaults, sorter;
defaults = {
initialize: true,
identify: _.stringify,
datumTokenizer: null,
queryTokenizer: null,
matchAnyQueryToken: false,
sufficient: 5,
indexRemote: false,
sorter: null,
local: [],
prefetch: null,
remote: null