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;
        }

Прямо сейчас мое предупреждение возвращает меня неопределенным. Я пробовал несколько вариантов, но ни один из них не был успешным.

Дайте мне знать, если у вас есть подсказка и спасибо заранее.


person vegas2033    schedule 18.09.2015    source источник
comment
Видимо это не так просто   -  person vegas2033    schedule 23.09.2015
comment
Вверху поста мне нужна помощь   -  person vegas2033    schedule 24.09.2015


Ответы (1)


Это глупый способ, но он работает. Мне пришлось создать скрытое поле, прокрутить каждый результат в 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
                }
            });

Вероятно, не самый лучший и чистый способ, но он работает

person vegas2033    schedule 24.09.2015