Директива Angular-UI Select2 Функция поиска не работает

Я использую директиву angular-ui select2. Я знаю, что это устарело, но мое приложение использует эту директиву повсеместно, и я хочу сделать улучшение. Вскоре мы перейдем к новой альтернативе ui=select.

Я загружаю данные json с помощью ajax-вызова в соответствии с примером здесь http://select2.github.io/select2/. Данные загружаются правильно и могут быть выбраны, однако я не могу искать и сужать / фильтровать результаты. Из того, что я понимаю, это подтверждается в директиве. когда я что-то печатаю, данные обновляются, но не фильтруются в соответствии с условиями поиска. ниже мой код

<input type="text" id="users" ui-select2="filters.select2Test" ng-model="filters.model.users"
data-placeholder="Pick a user" ng-required="true" style="width: 300px" />

$scope.filters = {
                     select2Test: {
                    id: function(user) {
                        return user.code;
                    },
                    minimumInputLength: 3,
                    multiple: true,
                    ajax: {
                        url: 'api/employee', //This URL points to an internal location and wouldn't work 
                        dataType: 'json',

                        data: function (params) {
                            return {
                                q: params.term, // search term
                                page: params.page
                            };
                        },
                        results: function(data, page) {
                            return { results: data };
                        }
                    },

                    formatResult: function(data) {
                        return "<div class='select2-user-result'>" + data.name + "</div>";
                    },
                    formatSelection: function(data) {
                        return data.name;
                    },
                    initSelection: function(element, callback) {
                        var data = [];
                        $(element.val().split(",")).each(function(i) {
                            var item = this.split(':');
                            data.push({
                                id: item[0],
                                title: item[1]
                            });
                        });
                        callback(data);
                    }
                }
           }

1 ответ

Соответствующий должен быть добавлен в ваши опции select2:

select2Test: {
    ...
    matcher: function(term, text, option) {
      return option.name.includes(term);
    },
    ...
}
Другие вопросы по тегам