Chcę użyć prefetch i nie mogę go uruchomić! Oto mój kod:typeahead, bloodhound: zdalny działa, ale nie prefetch
function initAutocompletion() {
$("input[data-autocomplete-prefetch-url]").each(function() {
var $this = $(this);
var urlPrefetch = $this.data("autocomplete-prefetch-url");
var prefetch;
pref = {
url: urlPrefetch,
filter: filter
};
var bloodHound = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
limit: 10,
prefetch: pref
});
bloodHound.initialize();
$this
.typeahead('destroy')
.typeahead({
hint: true,
highlight: true,
minLength: 1
},
{
displayKey: 'value',
source: bloodHound.ttAdapter()
});
});
}
function filter(list) {
return $.map(list, function (v) { return { value: v.toString() }; });
}
To nie działa.
Jeśli użyję zdalnego zamiast wstępnego ładowania, działa!
var bloodHound = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
limit: 10,
remote: pref
});
Nie mogę potwierdzić.
Czy ktoś może mi pomóc?
oficjalnej przykład z pobierania wstępnego nie działa dla mnie bez 'clearPrefetchCache'. Dodanie 'clearPrefetchCache' przed" initialize "pomogło. Chociaż to nie wyjaśnia, co się dzieje. – Gherman
Warto zauważyć, że może to nie być świetny pomysł na produkcję w zależności od aplikacji, ponieważ jeśli wyczyścisz pamięć podręczną pobierania wstępnego przy każdym ładowaniu strony, musisz załadować dane do pamięci podręcznej przy każdym ładowaniu strony, aby uzyskać tylko korzyść pamięć podręczną, dopóki nie przełączysz stron lub nie załadujesz ponownie bieżącej strony. Prawdopodobnie świetny pomysł na środowisko programistyczne. – Tony