Twitter Typeahead - 重复的AJAX建议

时间:2014-06-05 20:06:53

标签: jquery twitter-typeahead

我能够毫无问题地使用旧版本的Twitter Typeahead,我对新版本的了解肯定是有限的,我肯定对为什么会出现重复条目​​感到困惑。

这是我的Javascript:

// Sources
var sources = new Bloodhound({
    datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'),
    queryTokenizer: Bloodhound.tokenizers.whitespace,
    prefetch: '/sources/prefetch/',
    remote: '/sources/prefetch/'
});

sources.initialize();

$('#a_sources_list').typeahead(null, {
  name: 'sources',
  displayKey: 'name',
  source: sources.ttAdapter()
})

/ sources / prefetch / 返回:

[{"id":"1","name":"Google"},{"id":"3","name":"Yahoo"}]

以下是正在发生的事情的屏幕截图:Duplicate Results

1 个答案:

答案 0 :(得分:5)

问题在于prefetchremote来自同一来源。

这里详述的问题:
https://github.com/twitter/typeahead.js/issues/614

基本上, BloodHound 有默认限制。如果建议数量低于该限制,则会调用远程URL。

可以选择创建重复检测器:
https://github.com/twitter/typeahead.js/blob/master/doc/bloodhound.md#options

您可以使用它来确保相同的项目不会出现两次。

这是dupDetector的一个例子:
https://github.com/twitter/typeahead.js/issues/606#issuecomment-34667422

dupDetector: function(remoteMatch, localMatch) {
    return remoteMatch.id === localMatch.id;
}