我有一个包含多个过滤器的表单,但对于某些过滤器,我需要严格比较。
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>
我尝试了第三个参数true
,但它也适用于firstname
过滤器。
问题是:如果您选择值 2
,则 id 中包含 2
的所有用户都将被过滤,我不希望出现这种行为。
这是fiddle .
最佳答案
我尝试在本地修复它,而不是使用自定义过滤器,它的工作原理是 PLUNKER LINK
必须指定多个过滤器标签
<li ng-repeat="user in users | filter:{'user_id': search.user_id}: true | filter: {'firstname' : search.firstname}">
尽管有一些警告:
我必须将类型从数字更改为字符串...
如果我重置完全匹配的值,它不起作用...
所以我必须编写一个自定义文件管理器,它可以精确匹配并忽略空/空值
$scope.filter2 = function(field1, field2) {
if(field2 === "" || field2 === null) return true;
return field1 === field2;
};
您会在提供的 plunker 链接中找到它们
关于AngularJS 仅对一个字段进行严格过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24867824/