AngularJS strict filter字段为空时如何显示所有值?
我有一个表,它可以被几个列过滤。过滤器是严格的。启动数据时,它会显示所有值。但是,在按某个列进行筛选并返回到empty选项以显示所有值之后,它将显示一个空表。如何仅对非空值应用严格筛选AngularJS strict filter字段为空时如何显示所有值?,angularjs,html-table,angularjs-ng-repeat,Angularjs,Html Table,Angularjs Ng Repeat,我有一个表,它可以被几个列过滤。过滤器是严格的。启动数据时,它会显示所有值。但是,在按某个列进行筛选并返回到empty选项以显示所有值之后,它将显示一个空表。如何仅对非空值应用严格筛选 <select ng-model="search.column1"> <option value=''></option> <option ng-repeat="e in vm.getExample value="{{e.column1}}">
<select
ng-model="search.column1">
<option value=''></option>
<option ng-repeat="e in vm.getExample value="{{e.column1}}">{{e.column1}}</option>
</select>
<select
ng-model="search.column2">
<option value=''></option>
<option ng-repeat="e in vm.getExample value="{{e.column2}}">{{e.column2}}</option>
</select>
<table>
<tr>
<th>Column1</th>
<th>Column2</th>
</tr>
<tr ng-repeat="e in vm.getExample | filter:search:true">
<td>{{ e.column1 }}</td>
<td>{{ e.column2 }}</td>
<tr>
</table>
{{e.column2}
专栏1
专栏2
{{e.column1}
{{e.column2}
您的问题在于使用过滤器
:
您应该将filter:search:true
更改为filter:search
第三个参数是比较器。在这种情况下,您不需要它:
比较器,用于确定是否使用
表达式(当它不是函数时)应视为匹配
基于期望值(来自过滤器表达式)和实际值
值(来自数组中的对象)
如果您想更多地了解比较器,我建议您阅读(SO)
代码的工作片段:
var-app=angular.module('testApp',[]);
app.controller('testController',['$scope',函数($scope){
this.getExample=[{
“column1”:1,
“column2”:2
}, {
“column1”:3,
“column2”:4
}, {
“column1”:5,
第二栏:6
}];
}]);代码>
{{e.column1}
{{e.column2}
专栏1
专栏2
{{e.column1}
{{e.column2}
在控制器中创建自定义过滤器:
$scope.filterMyData = function (input, searchParam) {
if (searchParam == '')
return true;
return angular.equals(input, searchParam);
}
并改为:
<tr ng-repeat="e in vm.getExample | filter:search:filterMyData">
我认为问题在于删除真实选项(|过滤器:搜索),我知道,但如果我有“some”和“some data”值,并选择按“some”进行过滤,它将同时显示这两个值。我需要几个字段的严格比较器。我需要严格筛选,因为如果我有'some'和'some data'值并选择按'some'筛选,它将同时显示这两个值。谢谢@Justas。我遇到了同样的问题,你的回答很有帮助。