过滤 属性 即使它不存在
Filter on property even if it doesn't exist
在 angular 1.2 中我有一个对象数组:
[{
name: 'bob'
},{
name: 'jack',
archived: false
},{
name: 'ted',
archived: true
}]
然后我将 ng-repeat 一组人并尝试过滤掉 archived = true 的任何对象
<div ng-repeat="person in people | filter: {archived: '!' }">
这在 angular 1.2
中非常有效
但是当我升级到 angular 1.3 时它停止工作。
我知道我可以简单地编写自己的过滤函数,但是是否有正确的方法来过滤布尔值 属性 等于 true 的地方,其中 属性 可能不存在于所有对象中。
如果 属性 不存在,则不应过滤。上述示例数组中的 IE 仅应过滤掉 ted。
UPD:更新了正确的代码。
我会为此创建一个辅助函数:
$scope.notArchived = function(el) {
return !el.archived;
};
HTML:
ng-repeat="person in people | filter: notArchived"
虽然这似乎适用于 1.3 之前的版本:
<div ng-repeat="person in people | filter: {archived: '!' }">
这在 angular 1.3
中非常有效
<div ng-repeat="person in people | filter: {archived: '!true' }">
在 angular 1.2 中我有一个对象数组:
[{
name: 'bob'
},{
name: 'jack',
archived: false
},{
name: 'ted',
archived: true
}]
然后我将 ng-repeat 一组人并尝试过滤掉 archived = true 的任何对象
<div ng-repeat="person in people | filter: {archived: '!' }">
这在 angular 1.2
中非常有效但是当我升级到 angular 1.3 时它停止工作。
我知道我可以简单地编写自己的过滤函数,但是是否有正确的方法来过滤布尔值 属性 等于 true 的地方,其中 属性 可能不存在于所有对象中。
如果 属性 不存在,则不应过滤。上述示例数组中的 IE 仅应过滤掉 ted。
UPD:更新了正确的代码。
我会为此创建一个辅助函数:
$scope.notArchived = function(el) {
return !el.archived;
};
HTML:
ng-repeat="person in people | filter: notArchived"
虽然这似乎适用于 1.3 之前的版本:
<div ng-repeat="person in people | filter: {archived: '!' }">
这在 angular 1.3
中非常有效<div ng-repeat="person in people | filter: {archived: '!true' }">