Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS:清除输入字段时防止函数触发_Javascript_Angularjs_Angular Material - Fatal编程技术网

Javascript AngularJS:清除输入字段时防止函数触发

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

我有一个AngularJS 1.7x应用程序,具有“即时”搜索功能,在500毫秒延迟后执行搜索功能,只要至少有3个字符(代码如下)

问题是在我执行搜索后,然后按下重置按钮。一切都会按预期的方式重置,但当我输入一个新查询时,将不再使用ng minlength-即,即使我只输入了一个字符,也会调用查询函数

导致错误的原因是$scope.searchParams.q在第二次(意外)发布的请求正文中不再有效

以下是视图:

<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()
    });
};