Javascript AngularJS:清除输入字段时防止函数触发
我有一个AngularJS 1.7x应用程序,具有“即时”搜索功能,在500毫秒延迟后执行搜索功能,只要至少有3个字符(代码如下) 问题是在我执行搜索后,然后按下重置按钮。一切都会按预期的方式重置,但当我输入一个新查询时,将不再使用ng minlength-即,即使我只输入了一个字符,也会调用查询函数 导致错误的原因是$scope.searchParams.q在第二次(意外)发布的请求正文中不再有效 以下是视图:Javascript AngularJS:清除输入字段时防止函数触发,javascript,angularjs,angular-material,Javascript,Angularjs,Angular Material,我有一个AngularJS 1.7x应用程序,具有“即时”搜索功能,在500毫秒延迟后执行搜索功能,只要至少有3个字符(代码如下) 问题是在我执行搜索后,然后按下重置按钮。一切都会按预期的方式重置,但当我输入一个新查询时,将不再使用ng minlength-即,即使我只输入了一个字符,也会调用查询函数 导致错误的原因是$scope.searchParams.q在第二次(意外)发布的请求正文中不再有效 以下是视图: <input ng-model="searchQuery" ng-chang
<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>
它激发的原因是searchText不再为null,而是为空。 尝试在查询函数的开头添加if(searchText.length>=3)
$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()
});
};