javascript - Angularjs:名称以 ! 开头时搜索过滤器不起作用(感叹号)

标签 javascript angularjs search filter

我有州列表,我已经添加了州名搜索过滤器。 我有这样的数组:

stateList : [{name: 'abc', area:500},{name: '!def', area:500}]

我有 <li>ng-repeat="state in stateList | filter:{name:searchText}"

使用 ng-model="searchText" 搜索文本框

搜索在正常情况下工作,但当我搜索时!(感叹号)。它没有给出任何结果。它应该给出名称为“!def”的状态

最佳答案

问题是 ! token 被 AngularJS 识别为 “否定谓词”。不过,您可以像这样创建自定义 myFilter:

angular.module('app', []).controller('ctrl', function($scope) {
  $scope.stateList = [{
    name: 'abc',
    area: 500
  }, {
    name: '!def',
    area: 500
  }]
}).filter('myFilter', function() {
  return function(input, filter) {
    if (!filter.name)
      return input;
    return input.filter(function(x) {
      return x.name.indexOf(filter.name) != -1;
    });
  }
})
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<div ng-app='app' ng-controller='ctrl'>
  <input type='text' ng-model='searchText' />
  <ul>
    <li ng-repeat='state in stateList | myFilter : {name:searchText}'>{{state | json}}</li>
  </ul>
</div>

关于javascript - Angularjs:名称以 ! 开头时搜索过滤器不起作用(感叹号),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47587719/

相关文章:

javascript - 如何在 AngularJS 中刷新不同 View 时重定向?

ruby-on-rails - 在 Rails 应用程序中将模型搜索逻辑放在哪里?

javascript - 使用 JS 跟踪 html 表中第一列的搜索值?

PHP array_search 不工作

javascript - 用于背景切换的闪烁预加载图像

javascript - 在单击 react 之前触发的 onClick 事件

angularjs - 使用 ui-router 动态 View 名称

javascript - 未剥离 AngularJS JSON 漏洞保护

javascript - 正则表达式 : Different results when using Backreference

javascript - 如何使用 JavaScript 将列表项添加到现有列表