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

时间:2018-08-25 21:17:08

标签: javascript angularjs angular-material

我有一个具有“即时”搜索功能的AngularJS 1.7x应用,只要延迟至少500毫秒并且至少包含3个字符(以下代码),该应用就会执行搜索功能。

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

由此产生的错误来自以下事实:在第二个(偶然的)POST的请求正文中不再有$ scope.searchParams.q。

这是视图:

Installing collected packages: google-cloud-pubsub
  Found existing installation: google-cloud-pubsub 0.26.0
    Uninstalling google-cloud-pubsub-0.26.0:
      Successfully uninstalled google-cloud-pubsub-0.26.0
Successfully installed google-cloud-pubsub-0.37.2

以下是控制器中的相关功能:

<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>

1 个答案:

答案 0 :(得分:0)

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