我有一个$ scope.myData对象,它包含一大块数据。我想要做的是显示数据,但过滤掉空值和空字符串:
$scope.myData = [
{
"ID" : "001",
"Message" : "test test test test"
},
{
"ID" : "002",
"Message" : "test test test test"
},
{
"ID" : "003",
"Message" : "test test test test"
},
{
"ID" : "004",
"Message" : "test test test test"
},
{
"ID" : "005",
"Message" : " "
},
{
"ID" : "006",
"Message" : "test test test test"
},
{
"ID" : "007",
"Message" : "test test test test"
},
{
"ID" : "007",
"Message" : null
}
]
我可以对上面的内容执行ng-repeat并通过以下方法过滤null:
<div ng-repeat="data in myData | filter:{Message: '!!'}">
{{ data.ID }}
{{ data.Message }}
</div>
但我怎样才能过滤空字符串,例如:
"Message" : " "
由于
答案 0 :(得分:56)
我们可以简单地使用ng-if here:
<div ng-repeat="data in myData " ng-if="data.Message">
{{ data.ID }}
{{ data.Message }}
</div>
答案 1 :(得分:18)
您可以使用函数而不是像这样的对象
<div ng-repeat="data in myData | filter:emptyOrNull">
{{ data.ID }}
{{ data.Message }}
</div>
在控制器中
$scope.emptyOrNull = function(item){
return !(item.Message === null || item.Message.trim().length === 0)
}
答案 2 :(得分:7)
您可以创建自定义过滤器:
.filter('hasSomeValue', [function(){
return function(input, param) {
var ret = [];
if(!angular.isDefined(param)) param = true;
angular.forEach(input, function(v){
if(angular.isDefined(v.Message) && v.Message) {
v.Message = v.Message.replace(/^\s*/g, '');
ret.push(v);
}
});
return ret;
};
}])
在你的HTML中:
<div ng-repeat="data in myData | hasSomeValue: data.Message">
答案 3 :(得分:3)
您可以使用&#39;&#39;宪章。 试试这样的检查。
<div ng-repeat="data in myData | filter:{Message: ''}">
答案 4 :(得分:3)
您可以使用角度过滤器:
代码段:
.filter('filterData',function(){
return function(data) {
var dataToBePushed = [];
data.forEach(function(resultData){
if(resultData.Message && resultData.Message != " ")
dataToBePushed.push(resultData);
});
return dataToBePushed;
}
});
答案 5 :(得分:0)
如果要过滤掉空白对象中的值,可以创建自定义过滤器并根据值过滤每个过滤器。
这样的事情:
.filter("notEmpty",
function () {
return function (object) {
var filteredObj = {};
angular.forEach(object, function (val, key) {
if (val != null) {
if (typeof(val) === "object") {
if (Object.keys(val).length > 0) {
filteredObj[key] = val;
}
} else if (typeof(val) === "string") {
if (val.trim() !== "") {
filteredObj[key] = val;
}
} else {
filteredObj[key] = val;
}
}
});
return filteredObj;
};
});
您还可以使用ng-if指令和一个根据需要解析对象的函数。