忽略AngularJS筛选器中的空白下拉列表值
我有一个用户数据列表,我正在添加“高级搜索”功能。高级搜索由许多下拉列表组成,允许用户过滤其结果,例如,将结果限制为特定部门的用户:忽略AngularJS筛选器中的空白下拉列表值,angularjs,angularjs-filter,Angularjs,Angularjs Filter,我有一个用户数据列表,我正在添加“高级搜索”功能。高级搜索由许多下拉列表组成,允许用户过滤其结果,例如,将结果限制为特定部门的用户: <select ng-model="search.department_id" ng-options="department.id as department.name for department in departments"> <option value="">(Select from list)</option>
<select ng-model="search.department_id" ng-options="department.id as department.name for department in departments">
<option value="">(Select from list)</option>
</select>
并将ng repeat
更改为:
ng-repeat="user in users | filter:search:ignoreNullComparator | orderBy:'name'
但是,尽管通过一些调试可以看到使用了自定义比较器,但它对结果没有任何影响
< P> >,如果选择空白选项,我如何得到过滤器来忽略DROPDENS? < P>您的比较器中参数的顺序是错误的,比较器应该定义为<代码>函数(实际的,预期的)< /C> >:
我更新函数以处理字符串和数字搜索字段
$scope.ignoreNullComparator=函数(实际,预期){
如果(预期===null | |预期===''| |预期的类型===“未定义”){
返回true;
}如果(!isNaN(预期值))则为else{
expected2=parseInt(预期);
返回角度。等于(预期值2,实际值);
}else if(实际索引of(预期)=-1){
返回false;
}
返回true;
};代码>
谢谢,成功了。我有一种感觉,那会很简单!
$scope.ignoreNullComparator = function(expected, actual){
if (expected === null) {
return true;
} else {
return angular.equals(expected, actual);
}
};
ng-repeat="user in users | filter:search:ignoreNullComparator | orderBy:'name'
$scope.ignoreNullComparator = function(actual, expected){
if (expected === null) {
return true;
} else {
return angular.equals(expected, actual);
}
};