【发布时间】:2016-08-31 16:57:54
【问题描述】:
我正在尝试使用 Typeahead.js (v0.11.1) + Bloodhound 来显示查询结果。该查询搜索用户列表并根据email、last_name 或first_name 返回匹配项。如果我查询smi,匹配项如下所示:
[{"email":"john@email.com","last_name":"Smith","first_name":"John"},
{"email":"bob@email.com","last_name":"Smith","first_name":"Bob"}]
我的 Bloodhound 引擎如下所示:
var userSearch = new Bloodhound({
datumTokenizer: function (user) {
return Bloodhound.tokenizers.obj.whitespace(user.email, user.last_name, user.first_name);
},
queryTokenizer: Bloodhound.tokenizers.whitespace,
remote: {
url: '/search/users?query=%QUERY',
wildcard: '%QUERY'
}
});
问题是 Typeahead 只在有一个 JSON 对象时显示匹配,如果它返回一个对象数组,如上面的示例,则没有匹配。
我尝试将transform 添加到remote,但没有返回任何匹配项:
transform: function(users) {
return $.map(users, function(user) {
return {
email: user.email,
last_name: user.last_name,
first_name: user.first_name
}
});
}
【问题讨论】:
标签: jquery json typeahead.js bloodhound