У меня есть приложение AngularJS 1.7x с функцией «мгновенного» поиска, которое выполняет функцию поиска после задержки 500 мс и до тех пор, пока есть не менее 3 символов (код ниже).
Проблема в том, что после того, как я выполнил поиск, а затем нажал кнопку сброса. Все сбрасывается, как и должно быть, но когда я иду, чтобы ввести новый запрос, ng-minlength больше не учитывается - то есть функция запроса вызывается, даже если я ввел только один символ.
Возникшая ошибка связана с тем, что $ scope.searchParams.q больше не доступен в теле запроса на втором (случайном) POST.
Вот вид:
<input ng-model="searchQuery" ng-change="query(searchQuery)" ng-minlength="3"
ng-model-options="{updateOn: 'default blur', debounce: {default:500, blur:0}}">
<md-button ng-if="searchQuery" ng-click="reset()">Clear</md-button>
Вот соответствующие функции в контроллере:
$scope.reset = function () {
$scope.searchQuery = null;
$scope.searchParams.selectedCity = [];
$scope.searchParams.q = [];
$scope.searchResults = {};
};
$scope.query = function (searchText) {
$scope.searchParams.q = searchText;
$http({
method: 'POST',
url: $rootScope.url,
data: $scope.searchParams
}).then(function successCallback(response) {
$scope.searchResults = response.data;
}, function errorCallback(response) {
$rootScope.errorToast()
});
};