我正在使用带有预取和远程的typeahead.js http://twitter.github.io/typeahead.js/examples/#custom-templates
$(document).ready(function() {
var castDirectors = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
prefetch: '../api/v1/search/people_typeahead',
remote: '../api/v1/search/people_typeahead?q=%QUERY'
});
castDirectors.initialize();
$('#remote .typeahead').typeahead(null, {
name: 'cast-directors',
displayKey: 'value',
source: castDirectors.ttAdapter(),
templates: {
empty: [
'<div class="empty-message">',
'no matching names',
'</div>'
].join('\n'),
suggestion: Handlebars.compile('<p><a href="{{link}}">{{value}}</a></p>')
}
});
});
但是,预取JSON和远程JSON中存在重复的条目。如何进行重复数据删除以便只显示一个条目?
答案 0 :(得分:4)
将dupDector选项添加到您的Bloodhound初始化代码中,即将以下代码放在&#34; remote:&#34; :
dupDetector: function(remoteMatch, localMatch) {
return remoteMatch.value === localMatch.value;
}
您还没有包含您的JSON,因此我无法确定上述代码中的比较是否正确。此代码将忽略本地和远程数据源中的重复值。