У меня есть компонент угловой ui-boostrap typeahead, который работает правильно, пока я не добавил одно требование ко всей функции. Я хочу вызвать backend для предложенных результатов сразу после того, как пользователь напечатает 3 буквы. Это сделано правильно, но моя проблема в том, что результаты видны только тогда, когда пользователи вводят 4-ю букву. Есть ли способ обойти это, заставляя его обновлять пользовательский интерфейс сразу после того, как пользователь вводит третью букву. Код:
HTLM
<input name="states" id="states" type="text" ng-model="vm.cityName"
uib-typeahead="municipality as municipality.city + ' (' + municipality.name + ') '+municipality.zipCode for municipality in vm.getMunicipalitiesByCity($viewValue) | filter:$viewValue | limitTo:8" class="form-control" typeahead-on-select="vm.citySelected()" >
JS Controller
vm.getMunicipalitiesByCity = function (cityName) {
if (cityName != undefined && cityName.length == 3) {
CalculationEndpointService.municipalitiesByCity({cityName: cityName}, function (result) {
vm.municipalities = result.map(
function (item) {
return item;
}
);
});
}
if(cityName.length<3){
vm.municipalities=[""];
}
return vm.municipalities;
};
вы можете использовать typeahead-min-length
. см. https://angular-ui.github.io/bootstrap/#/typeahead