我正在使用Typeahead.js,其实现与"多个数据集非常相似"在examples中找到:
var nbaTeams = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('team'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
prefetch: '../data/nba.json'
});
var nhlTeams = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('team'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
prefetch: '../data/nhl.json'
});
var footer = function (context) {
// calculate total hits here
return "<a href='...'>" + count + "</a>";
}
$('#multiple-datasets .typeahead').typeahead(null, {
name: 'nba-teams',
display: 'team',
source: nbaTeams,
templates: {
header: '<h3 class="league-name">NBA Teams</h3>'
},
limit: 3
},
{
name: 'nhl-teams',
display: 'team',
source: nhlTeams,
templates: {
header: '<h3 class="league-name">NHL Teams</h3>',
footer: footer
},
limit: 3
});
我使用的是最新版本的Typeahead.js(v0.11.1)。我试图将一个页脚模板添加到NHL团队部分的底部,该部分具有匹配结果的总数。像<a href="...">Browse all ### results</a>
这样的东西。我无法在文档中找到可以从Bloodhound中获取总点击次数的任何地方。
我已经看到人们使用远程数据源执行此操作,但我的数据源足够小,可以插入和缓存,因此我想使用预取。
答案 0 :(得分:3)
我认为您的其他代码非常好,您只需要通过以下内容更新footer
功能。
var footer = function (context) {
// calculate total hits here
return "<a href='#'>browse all <b>" + context.suggestions.length + "</b> results</a>";
}
看看this小提琴。