键入提前.js显示所有结果,而不仅仅是匹配结果
typeahead.js showing all results instead of just matching results
我在获取 typeahead 时遇到问题.js只返回与输入的查询匹配的结果。例如,如果我在我的公司搜索栏中输入"Facebook",它将返回所有公司("雅虎"、"谷歌"等),即使其中大多数与查询不匹配。我没有对数据进行任何服务器端处理。我的基准分词器函数应该负责此过滤吗?
另外,我注意到每次修改查询时,它都会为每个基准面输入 filter() 函数。因此,当我将查询从"G"更改为"Go"时,filter: 函数 (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"}, ...]
我正在使用远程,因为预取绝对不适合我。它只给了我建议[对象对象],这毫无意义。我想在初始化时使用预取/远程加载整个 .json 文件,并且不向服务器发出任何进一步的请求。所以我认为预取是我更好的选择(小文件,77kB),但它根本不起作用。
非常感谢 v 的帮助!
我认为你缺少"准备"。尝试像我一样的事情
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,
});
或者,你可以在那里看看我的帖子。它仅返回用户在文本框中输入的结果。我的堆栈溢出帖子
我也有这个问题。问题是远程 URL 返回标准列表,无法将查询传递给它,以便它返回与搜索词匹配的筛选子集。因此,筛选器实现必须处理筛选结果,以便它们与查询匹配。
相关文章:
- Ajax聊天消息重复而不仅仅是更新
- 鼠标悬停事件影响列表中所有行中的按钮,而不仅仅是特定按钮
- 事件为所有项目而不仅仅是当前项目激发
- 在加载时显示,而不仅仅是在选中时显示
- 删除 HttpCookie 不仅仅是它的值
- 脚本选择所有输入,而不仅仅是复选框
- for 循环中的 if 语句都执行,而不仅仅是一个
- 当将函数传递给方法时,为什么使用匿名函数容器而不仅仅是原始函数有效
- .slideup()删除整个ul,而不仅仅是嵌套的li
- jQuery隐藏所有trs或td,而不仅仅是一个
- 使用Maven压缩所有内容,而不仅仅是源目录
- 从数组中删除双值,而不仅仅是javascript中的重复值
- 在全球范围内强制ng严格di,而不仅仅是在ng应用程序级别上
- Jquery Slider-获取滑块的每个数值?不仅仅是在mouseout上
- 我如何让jQuery在Facebook发布自动加载时做一些事情,而不仅仅是在页面加载时
- 注入jquery会完全改变页面结果——这是一种糟糕的方式
- 如何使元素的宽度和高度为页面(文档)的100%,而不仅仅是窗口(浏览器)
- 键入提前.js显示所有结果,而不仅仅是匹配结果
- .prepend() 结果对每个人都是可见的,而不仅仅是对执行操作的人
- 查看查询的完整结果,而不仅仅是第一行