【问题标题】:Angular filter search with similar and not exact words角度过滤器搜索具有相似但不准确的词
【发布时间】:2016-05-04 14:37:49
【问题描述】:

过滤器只查找完全匹配但不相似的文本。例如。如果其中一个条目是“John Dwayne Smith”,则用户必须按确切的顺序输入这些词才能被过滤器搜索,但是如何使搜索以“Hello there, world!”的方式工作。即使有人键入这些单词的组合,例如“John Smith”,也会显示?

HTML:

<input type="text" placeholder="Search" ng-model="userSearch">

   <div ng-repeat="user in users | filter:userSearch">
     <div>
       {{user.firstname}} {{user.lastname}}
     </div>
   </div>

JS:

angular.module('myApp', [])
  .controller('myCtrl', function($scope){

  $scope.users = [

    {firstname: 'john', lastname: 'dwayne smith'},
    {firstname: 'jane', lastname: 'dwayne due'},
    {firstname: 'bob', lastname: 'dwayne rand'}

  ];

});

JSBin Example

【问题讨论】:

  • 试试这个.. |过滤器:{firstname:userSearch}:true
  • 看到这个jsfiddle,组合工作。
  • 过滤器:{firstname:userSearch}:true 不起作用
  • @Qianyue,在那个小提琴中,如果你输入 John Smith,搜索不会找到名字。

标签: javascript angularjs


【解决方案1】:

看看angular-filter。它提供了一个fuzzy filter

<input type="text" ng-model="search" placeholder="search book" />
<li ng-repeat="book in books | fuzzy: search">
  {{ book.title }}
</li>
<!--case sensitive-->
<li ng-repeat="book in books | fuzzy: search: true">
  {{ book.title }}
</li>

【讨论】:

    【解决方案2】:

    当您使用角度滤镜时,|过滤器的工作方式为 'like' 但如果最后添加 :true ,则它的工作方式为 'equal'

    【讨论】:

    • 我没有使用 :true,所以它应该按我的意愿工作,如果你说的是真的,对吗?
    • 尝试更新你的 ng-repeat 为:ng-repeat="user in users | filter:userSearch:true
    • 你也可以试试这个:ng-repeat="user in users | filter:userSearch:strict"
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-25
    • 2014-11-29
    • 1970-01-01
    相关资源
    最近更新 更多