Я недавно перешел с select2 на ui-select.Ниже я покажу, как это работает, используя select2.
Контекст: у меня есть данные клиентов, которые необходимо отфильтровать с помощью ui-select.
Поскольку данные клиентов велики и могут быть больше 100000, я не могу их загрузитьзатем отфильтруйте с помощью ui-select.Мне нужно сделать запрос к событию onchange сервера (событие изменения ввода с задержкой) и ограничить результаты до 10.
Select2 Html:
<div
st-input-event="change"
st-search="_company_owner"
style="width: 100%"
ui-select2="ClientSelect2Options(true)"
ng-model="company"
name="company"
class="text"
class="form-control "
placeholder="{{'SEARCH_BY_COMPANY' | translate}}"></div>
</td>
Select2 javascript:
$scope.ClientSelect2Options = function (allowClear) {
return {
allowClear: allowClear,
id: function (e) { return e },
ajax: {
transport: function (params) {
params.beforeSend = function (request) { request.setRequestHeader("Authorization", 'Bearer ' + $window.sessionStorage.token); };
return $.ajax(params);
},
url: $rootScope.config.API_URI + '/company/query?limit=' + 10 + '&page=' + 1,
dataType: "json",
type: "POST",
quietMillis: 500,
data: function (term) {
return { query: { name: { "$regex": term, "$options": "i" } } }; },
results: function (data) {
return { results: data.result }; }
},
initSelection: function (element, callback) {
var id = $(element).select2('val');
if (id && id.length > 0) {
return companySrv.getCompanyById(id, function (res) {
if (res && res.success) {
callback(res.result);
} else { callback(null); }
}, function () { callback(null); })
}
}
}
};
Можно ли выполнить запрос с сервера с помощью ui-select и как?