【发布时间】:2018-07-15 00:48:13
【问题描述】:
我在一个非常简单的设置中使用 Twitter Typeahead。它远程调用服务器以获取名称和标识符列表作为 json 数组,如下所示:
[{"value":"Declan Strosin","data":"b2c9d118-2e7a-4516-bc50-5505cbfcc834"},{"value":"Jany Legros","data":"d8b53d8c-d952-4fed-bc22-5932094abca1"}]
问题是有时 Typeahead 会呈现所有匹配的选项,但有时它只会显示几个。它决定渲染的内容似乎没有任何押韵或理由。
例如,我可能会输入“and”,然后从服务器接收一个包含 10 个用户的列表,这些用户的名称包括“Sandy Blogs”、“Andrew Blogs”、“John Sanderson”等,它会列出所有 10 个用户.正确的 3 个字母也会突出显示。
然而,对于其他搜索,“ros”、“dan”等,它可能会拉回 10 个用户,但只呈现两个或三个。
我怀疑问题出在我的 Bloodhound 基准标记器上,但我真的不知道该怎么办。这是我的 Bloodhound 设置。
return new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
remote: {
url: url + '?term=%QUERY',
wildcard: '%QUERY'
}
});
我已经阅读了这篇文章,https://github.com/twitter/typeahead.js/blob/master/doc/migration/0.10.0.md#tokenization-methods-must-be-provided,但我仍然不明智。
编辑:我现在遇到过从服务器拉回 10 个或更多条目的情况,但 Typeahead 没有呈现任何内容。
【问题讨论】:
-
您确定您的 ajax 请求运行良好吗?分享更多代码,您在上面发布的代码非常适合我。
-
如果您提供初始化预输入的代码会很有用。
-
一个 Json 示例会很有帮助,什么是显示的,什么不是
-
你确定你写
and的时候显示的是John Sanderson吗?我相信只有当您的查询与每个单词的开头匹配时,您的 Bloodhound 才会匹配。 -
Bloodhound 匹配通过远程发送的所有内容,即使结果中不存在查询。
标签: javascript tokenize typeahead.js twitter-typeahead bloodhound