提前打字,猎犬 : remote works but not prefetch

标签 typeahead prefetch bloodhound

我想使用预取,但我不能让它工作!
这是我的代码:

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() }; });
}

它不起作用。

如果我使用远程而不是预取它可以工作!
    var bloodHound = new Bloodhound({
        datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'),
        queryTokenizer: Bloodhound.tokenizers.whitespace,
        limit: 10,
        remote: pref
    });

我无法理解。

谁能帮我 ?

最佳答案

令人惊讶的是,今天早上它起作用了!
所以它驱使我认为它是关于缓存......它是!
在初始化 Bloodhound 之前添加 clearPrefetchCache() 可以解决问题。

       bloodHound.clearPrefetchCache();
       bloodHound.initialize();

我认为它没有显示任何建议,因为它缓存了一个空列表。

关于提前打字,猎犬 : remote works but not prefetch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23569375/

相关文章:

javascript - 将 Typeahead.js Bloodhound 与 Browserify 一起使用会给出空对象 {}

javascript - 寻血猎犬重置本地数据

javascript - 将自定义函数添加到 Bootstrap 提前输入

javascript - XPages typeahead 如何将组合框过滤器的值发送到服务器

c++ - 是否存在跨平台的方式来 boost 预取,以读取大的Boost内存mapping_file?

c - _builtin_prefetch()中第二个参数的作用是什么?

javascript - Bloodhound:Twitter Typeahead 没有显示从远程/ajax 获取的所有结果

php - Bootstrap 3 Typeahead Ajax 搜索使用 php mysql 函数

javascript - 我可以更改 Typeahead.js 中的模板引擎吗?

python - Django 无法在模板中迭代 prefetch_lated 对象