gpt4 book ai didi

javascript - typeahead.js 显示所有结果而不仅仅是匹配结果

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:43:34 26 4
gpt4 key购买 nike

我无法让 typeahead.js 仅返回与输入的查询匹配的结果。例如,如果我在公司搜索栏中输入“Facebook”,它会返回所有公司(“Yahoo”、“Google”等),即使其中大部分与查询不匹配。我没有对数据进行任何服务器端处理。我的 datumTokenizer 函数应该处理这个过滤吗?

此外,我注意到每次修改查询时,它都会为每个数据输入 filter() 函数。因此,当我将查询从“G”更改为“Go”时,filter: function (companies_list) 中的 console.log() 语句将打印 3000 次。

这是我的代码:

var companies = new Bloodhound({
datumTokenizer: function (datum) {
return Bloodhound.tokenizers.whitespace(datum.name);
},
queryTokenizer: Bloodhound.tokenizers.whitespace,
remote: {
url: '/json/company_list.json',
filter: function (companies_list) {
// Map the remote source JSON array to a JavaScript object array
return $.map(companies_list, function (company) {
console.log('mapping')
return {
name: company.name
};
});
}
}
});

// Initialize the Bloodhound suggestion engine
var promise = companies.initialize();
promise.done(function() {console.log('Bloodhound initialized!')});

// passing in `null` for the `options` arguments will result in the default
// options being used
$('#form-company').typeahead(null, {
name: 'companies',
displayKey: 'name',
// `ttAdapter` wraps the suggestion engine in an adapter that
// is compatible with the typeahead jQuery plugin
source: companies.ttAdapter()
});

以及我的网址返回的示例:

[{"name": "Yahoo"}, {"name": "Sanchai Technologies "}, {"name": "Oliver Wyman"}, {"name": "University of Oregon"}, ...]

我正在使用远程,因为预取绝对不适合我。它只给我建议[object Object],没有任何意义。我想在初始化时使用 prefetch/remote 加载整个 .json 文件,而不向服务器发出任何进一步的请求。所以我认为预取对我来说是更好的选择(小文件,77kB),但它根本不起作用。

非常感谢您的帮助!

最佳答案

我认为您缺少“准备”。像我一样尝试一下

var information = {
url: urlRoot,
prepare: function (query, settings) {
settings.type = "POST",
settings.url += '?prefix=' + query;
return settings;
}
};
var names = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('navn'),
queryTokenizer: Bloodhound.tokenizers.whitespace,

remote: information,

});

或者,您可以在那里查看我的帖子。它只返回用户在文本框中输入的结果。 My Stackoverflow post

关于javascript - typeahead.js 显示所有结果而不仅仅是匹配结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27910012/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com