AngularJS只对一个字段进行严格过滤

Syl*_*Syl 12 angularjs angularjs-ng-repeat angularjs-filter

我有一个带有多个过滤器的表单,但对于某些人来说,我需要严格的比较.

tl; dr:严格比较,user_id不是为了firstname.

<select ng-model="search.user_id">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="10">10</option>
    <option value="11">11</option>
    <option value="23">23</option>
</select>

<input type="text" ng-model="search.firstname">

<ul>
    <li ng-repeat="user in users | filter:search">#{{ user.user_id }} {{ user.firstname}}</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

我尝试了第三个参数,true但它也适用于firstname过滤器.

问题是:如果您选择该值2,2将过滤其ID中包含a的所有用户,我不希望出现此行为.

这是小提琴.

har*_*shr 15

我本来试图修复它,而不是自定义过滤器,它的工作,这里是PLUNKER LINK

必须指定多个过滤器标签

<li ng-repeat="user in users | filter:{'user_id':  search.user_id}: true | filter: {'firstname' : search.firstname}">
Run Code Online (Sandbox Code Playgroud)

虽然有几点需要注意:

  1. 我不得不将类型从数字改为字符串......

  2. 如果我重置完全匹配的值它不起作用...

所以我不得不写一个自定义文件管理器,它适用于完全匹配并忽略空/空值

$scope.filter2 = function(field1, field2) {
  if(field2 === "" || field2 === null) return true;
  return field1 === field2;
};
Run Code Online (Sandbox Code Playgroud)

你会在提供的plunker链接中找到它们