Typeahead/Bloodhound 只有 returns 第一次搜索结果而不是新搜索?

Typeahead/Bloodhound only returns first search results and not new search?

我已经使用 Bloodhound 实现了 Typeahead 以获取远程 JSON 数据并且它有效,但是当我删除输入中的内容并键入其他内容时,会出现相同的结果。我在 chrome 开发工具中检查网络,只有一个请求,即使我删除并重新开始输入,也没有新的请求。我该如何解决?应该有新的 keyup 请求?

   var articles = new Bloodhound({
            datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'),
            queryTokenizer: Bloodhound.tokenizers.whitespace,
            remote: {
                url: '../fetch-article',
                wildcard: '%QUERY'
            }
        });


        $('#search-article .typeahead').typeahead(null, {
            name: 'articles',
            display: 'value',
            highlight: true,
            limit: Infinity,
            minLength: 3,
            source: articles,
            templates: {
                empty: [
                '<div class="empty-message">',
                    'Article not found',
                '</div>'
                ].join('\n'),
                suggestion: function(data) {
                    return '<div class="tt-suggest-page">' + data.title + '<br><a href="../copyright/' + data.slug + '">Read More</a></div>';
                }
            }
        });

Bloodhound 将第一次命中的结果缓存到远程。然后,它会尝试仅在缓存数据中搜索您在文本字段中键入的第二个查询,因此不会再次点击遥控器。您可以告诉 bloodhound 不要使用缓存进行搜索。这可以使用以下配置完成:

var articles = new Bloodhound({
    datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'),
    queryTokenizer: Bloodhound.tokenizers.whitespace,
    remote: {
        url: '../fetch-article',
        wildcard: '%QUERY',
        cache: false        //set cache to false
    }
});

参考:https://github.com/twitter/typeahead.js/issues/1525

Bloodhound Typeahead 默认缓存远程调用,我们必须将缓存配置为 false 才能再次调用远程 URL。

cache – 如果为 false,将不会尝试读取或写入本地存储,并且始终会在初始化时从 url 加载预取数据。默认为真。

您可以在此处查看文档- https://github.com/twitter/typeahead.js/blob/master/doc/bloodhound.md#prefetch