我在范围内有这个数组:
$scope.randomArray = [
{
prop1: 'val1',
prop2: {
value: '3',
unit: 'l'
}
},
{
prop1: 'val2'
},
{
prop1: 'val3',
prop2: {
value: '10',
unit: 'l'
}
}
];
尝试仅对具有prop2
属性集的对象进行ng-repeat。如果没有必要,我不会为此创建单独的过滤器或范围函数,所以我尝试了here和here所述的解决方案:
<div ng-repeat="random in randomArray | filter : { prop2 : '!!'}">
{{random}}
</div>
但它不起作用。
答案 0 :(得分:4)
我想出的解决方案就是这个。使用ng-if for random.prop2
。这适用于prop2不为null / undefined。你的情况如何?对于任何其他过滤,您可以使用其他方法
<div ng-app="app">
<div ng-controller="appCtrl">
<div ng-repeat="random in randomArray" ng-if="random.prop2">
{{random}}
</div>
</div>
</div>
答案 1 :(得分:0)
试试这个。
var app = angular.module('app', [])
.controller('appCtrl', ['$scope',
function($scope) {
$scope.randomArray = [
{
prop1: 'val1',
prop2: {
value: '3',
unit: 'l'
}
},
{
prop1: 'val2'
},
{
prop1: 'val3',
prop2: {
value: '10',
unit: 'l'
}
}
];
}]);
app.filter('check', function() {
return function(items, tagName) {
var filtered = [];
angular.forEach(items, function(el) {
if(el['prop2'] != undefined) {
filtered.push(el);
}
});
return filtered;
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.0/angular.min.js"></script>
<div ng-app="app">
<div ng-controller="appCtrl">
<div ng-repeat="random in randomArray | check:'prop2'">
{{random}}
</div>
</div>
</div>