Dan*_*nev 5 javascript angularjs angularjs-filter
我有以下设置
$scope.array =
[
{propertyA: "test",
propertyB: {
propertyC: [true, true, false]
}
},
{propertyA: "test2"},
{propertyA: "test3"}
]
Run Code Online (Sandbox Code Playgroud)
然后
<div ng-repeat="item in array| filter :{propertyB: ''} :true">
{{item.propertyA}}
</div>
Run Code Online (Sandbox Code Playgroud)
所以问题是:
此设置不显示任何内容
如果我换到|filter :{propertyB: '!!'} :true它不显示任何东西
如果我改变|filter :{propertyB: undefined} :true它显示一切
我无法弄明白.
目标:我想显示具有propertyB未定义的项目,而在其他情况下则显示相反的项目.
编辑1:如果我迭代这个数组与angular.equals(item.propertyB, undefined)我得到false, true, true
编辑2:jsfiddle UPDATED
编辑3:我已经更新了问题
我最终做了这个。
.filter('undefinedProperties', ['$filter', function ($filter) {
var checkProperty = function (property, returnUndefined) {
if (returnUndefined) {
if (property !== undefined) {
return true;
} else {
return false;
}
} else {
if (property === undefined) {
return true;
} else {
return false;
}
}
};
return function (input, propertyArray, returnUndefined) {
if (angular.isArray(propertyArray)) {
if (angular.isArray(input) && input.length > 0) {
angular.forEach(propertyArray, function (property) {
for (var i = input.length; i-- > 0;) {
if (checkProperty(input[i][property], returnUndefined)) {
input.splice(i, 1);
}
}
});
}
return input;
} else {
throw "PropertyArray is not an array";
}
};
}])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
476 次 |
| 最近记录: |