我一直在使用typeahead和bloodhound进行一个项目,我觉得它真的不直观,令人沮丧。在一小时的研究中,需要花费一秒钟才能完成的事情会结束。
无论如何,我试图提醒我的猎犬结果的数量。
到目前为止我的代码
var pisList = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.whitespace,
queryTokenizer: Bloodhound.tokenizers.whitespace,
prefetch: {
url: "../Helper/LookUpPIs?list=" + $list,
cache: false
}
});
alert(pisList.length);
//Typeahead on project numbers
$('.pis').typeahead({
hint: true,
higlight: true,
minLength: 1
},
{
name: 'pis',
source: pisList
});
//Display project details distribution panel
$('input.pis').on('typeahead:selected', function (event, selection) {
var result = selection.match(/\((.*)\)/);
getPiInformation(result[1]);
});
return false;
}
现在我的警报让我回复未定义。我尝试了多种变体,但都没有成功。
如果您有提示并提前致谢,请告诉我。
答案 0 :(得分:1)
alert(
Object.keys(pisList.index.datums).length
);
答案 1 :(得分:0)
这是一种愚蠢的方式,但它有效。我必须创建一个隐藏字段,遍历datumtokenizer中的每个结果并递增值。
var pisList = new Bloodhound({
//datumTokenizer: Bloodhound.tokenizers.whitespace,
datumTokenizer: function (d) {
//count number of PIS found and put their ID in the field
$('#numberofPIs').val(Number($('#numberofPIs').val()) + Number(1));
return tokens;
},
queryTokenizer: Bloodhound.tokenizers.whitespace,
prefetch: {
url: "../Helper/LookUpPIs?list=" + $list,
cache: false
}
});
可能不是最好和最干净的方式,但它有效