[英]Angularjs filter in controller. How to filter not null, undefined and false values?
我有一个数组:
var array = [
{"name": "name1", "value": null},
{"name": "name2", "value": 3},
{"name": "name3", "value": false},
{"name": "name4", "value": undefined},
{"name": "name5", "value": "some text"}
];
现在,我想在我的角度控制器中过滤此数组以获取具有值的项目-
{"name": "name2", "value": 3}
和
{"name": "name5", "value": "some text"}
因此,我尝试了这种方式(它不起作用):
data = $filter('filter')(data, { value: emptyOrNull(value) });
function emptyOrNull(value) {
return !(value === null || value === undefined || value === false);
}
我究竟做错了什么?
一种简单有效的方法,它可以解决棘手的问题,但可以帮助您。 它将处理所有null, undefined, ('')
,false`
只是这样做
<span ng-repeat="entry in ctrl.array | filter:!!entry.value ">{{entry.name}} </span>
script.js
(function(angular) {
'use strict';
angular.module('FilterInControllerModule', []).
controller('FilterController', ['filterFilter', function(filterFilter) {
this.array = [{
"name": "name1",
"value": null
}, {
"name": "name2",
"value": 3
}, {
"name": "name3",
"value": false
}, {
"name": "name4",
"value": undefined
}, {
"name": "name5",
"value": "some text"
}];
}]);
})(window.angular);
也可以使用自定义过滤器..
.filter('customFilter',function(){
return function(val,input){
var result =[];
angular.forEach(val,function(res){
if(res.value && res.value.length || res.value){
result.push(res);
}
});
return result;
}
})
index.html
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Example - example-example29-production</title>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.4.3/angular.min.js"></script>
<script src="script.js"></script>
</head>
<body ng-app="FilterInControllerModule">
<div ng-controller="FilterController as ctrl">
<div>
All entries:
<span ng-repeat="entry in ctrl.array | filter:!!entry.value ">{{entry.name}} </span>
</div>
<div>
</div>
</div>
</body>
</html>
如果您想保持代码的风格,只需执行此操作即可。
data = $filter('filter')(data, {
value: !!value
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.