Twitter typeahead 0.11.1 Проблема токенизатора - PullRequest
0 голосов
/ 17 марта 2020

Код не работает для некоторых запросов. Удаленная конечная точка действительно возвращает правильные результаты, но проблема заключается в механизме подсказок.

Мой Json результат от удаленного APi выглядит как

[{"Код": "179.799.1", "Description": "Это тестовый desc1"},

{"Код": "179.799.2", "Описание": "Это тестовый desc2"},

{"Код ":" 179.799.3 "," Description ":" Это тестовый desc3 "}]

Запросы, которые работают :

  • " 179 ": возвращает все 3 записи
  • "179". : возвращает все 3 записи
  • "179.79": возвращает все 3 записи
  • "179.799.1": возвращает 1 запись

Запросы, которые не ' t работа :

  • "179,799": результатов не найдено
  • "179,799." : Ничего не найдено

API возвращает одинаковый результат для всех вышеуказанных запросов. В чем может быть проблема? Я пытался с Bloodhound.tokenizers.obj.nonword ('Код'), но не работал

var items = new Bloodhound({
            datumTokenizer: Bloodhound.tokenizers.obj.whitespace('Code'),
            queryTokenizer: Bloodhound.tokenizers.whitespace,
            remote: {
                url: '@Url.Content("~/")' + 'Home',
                wildcard: '%QUERY%',
                replace: function (url, uriEncodedQuery) {
                    //Get the data
                },
                cache: false
            }
        });
        items.initialize();
        $('#Items').typeahead({
            minLength: 3,
            displayKey: 'Code',
            highlight: true,
            hint: true
        }, {
                name: 'Items',
                source: items.ttAdapter(),
                displayKey: function (item) {
                    return item.Code + ' - ' + item.Description;
                },
                templates: {
                    suggestion: function (item) {
                        return '<div>' + item.Code + ' - ' + item.Description + '</div>';
                    },
                    empty: 'No results found',
                    pending:

                        function (query) {
                            return '<div>Loading...</div>';
                        }
                },
                limit: 10
            })
...