【发布时间】: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