Typeahead / Bloodhound - 结果数量

时间:2015-09-18 15:17:46

标签: jquery typeahead bloodhound

我一直在使用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;
        }

现在我的警报让我回复未定义。我尝试了多种变体,但都没有成功。

如果您有提示并提前致谢,请告诉我。

2 个答案:

答案 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
                }
            });

可能不是最好和最干净的方式,但它有效