【问题标题】:AngularJS: Prevent function from firing when clearing input fieldAngularJS:清除输入字段时防止函数触发
【发布时间】:2018-08-25 21:17:07
【问题描述】:

我有一个具有“即时”搜索功能的 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()
    });
};

【问题讨论】:

    标签: javascript angularjs angular-material


    【解决方案1】:

    它触发的原因是 searchText 不再为空,而是为空。 尝试在查询函数的开头添加 if(searchText.length>=3)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多