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
}
});
Bloodhound Typeahead 默认缓存远程调用,我们必须将缓存配置为 false 才能再次调用远程 URL。
cache
– 如果为 false,将不会尝试读取或写入本地存储,并且始终会在初始化时从 url 加载预取数据。默认为真。
您可以在此处查看文档- https://github.com/twitter/typeahead.js/blob/master/doc/bloodhound.md#prefetch
我已经使用 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
}
});
Bloodhound Typeahead 默认缓存远程调用,我们必须将缓存配置为 false 才能再次调用远程 URL。
cache
– 如果为 false,将不会尝试读取或写入本地存储,并且始终会在初始化时从 url 加载预取数据。默认为真。
您可以在此处查看文档- https://github.com/twitter/typeahead.js/blob/master/doc/bloodhound.md#prefetch