AngularJS: предотвращение срабатывания функции при очистке поля ввода - PullRequest
0 голосов
/ 26 августа 2018

У меня есть приложение 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()
    });
};

1 Ответ

0 голосов
/ 26 августа 2018

Причина, по которой он запускается, состоит в том, что searchText больше не равен нулю, а просто пуст. Попробуйте добавить if (searchText.length> = 3) в начале вашей функции запроса

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...