Angularjs 布尔型上的ng重复过滤器
我试图在ng重复中过滤布尔值 未注册用户列表:Angularjs 布尔型上的ng重复过滤器,angularjs,angularjs-ng-repeat,angularjs-filter,Angularjs,Angularjs Ng Repeat,Angularjs Filter,我试图在ng重复中过滤布尔值 未注册用户列表: <h3>Unregistered Users</h3> <div ng-repeat="user in users | filter:!user.registered"> <div class="row-fluid"> <div class="span2"> {{user.name}} </div&g
<h3>Unregistered Users</h3>
<div ng-repeat="user in users | filter:!user.registered">
<div class="row-fluid">
<div class="span2">
{{user.name}}
</div>
</div>
</div>
<h3>Registered Users</h3>
<div ng-repeat="user in users | filter:user.registered">
<div class="row-fluid">
<div class="span2">
{{user.name}}
</div>
</div>
</div>
未注册用户
{{user.name}
注册用户名单:
<h3>Unregistered Users</h3>
<div ng-repeat="user in users | filter:!user.registered">
<div class="row-fluid">
<div class="span2">
{{user.name}}
</div>
</div>
</div>
<h3>Registered Users</h3>
<div ng-repeat="user in users | filter:user.registered">
<div class="row-fluid">
<div class="span2">
{{user.name}}
</div>
</div>
</div>
注册用户
{{user.name}
有没有一个好的方法来过滤的基础上注册和!已注册。在控制器中创建一个方法,根据需要的逻辑返回true或false,并在过滤器中指定该函数 大概是这样的:
$scope.isRegistered = function(item) {
return item.registered;
};
<h3>Unregistered Users</h3>
<div ng-repeat="user in users | filter:!isRegistered ">
<div class="row-fluid">
<div class="span2">
{{user.name}}
</div>
</div>
</div>
$scope.isRegistered=功能(项){
已注册的退货项目;
};
未注册用户
{{user.name}
按obj表达式筛选:
<h3>Unregistered Users</h3>
<div ng-repeat="user in users | filter:{registered:false}">
<div class="row-fluid">
<div class="span2">
{{user.name}}
</div>
</div>
</div>
未注册用户
{{user.name}
JSFiddle:也有同样的问题。在Angular 1.1.5上,一个解决方案对我不起作用 找到这把小提琴:
您需要根据您的字段调整过滤器的代码。对Websirnik的答案稍加修改,这允许数据集的任何列名:
.filter('onlyBooleanValueFilter', [function () {
return function (input, column, trueOrFalse) {
var ret = [];
if (!angular.isDefined(trueOrFalse)) {
trueOrFalse = false;
}
angular.forEach(input, function (v) {
if (angular.isDefined(v[column]) && v[column] === trueOrFalse) {
ret.push(v);
}
});
return ret;
};
}])
标记:
<div repeat="row in your.dataset | onlyBooleanValueFilter: 'yourColumn' : true">
...your stuff here....
</div>
…你的东西在这里。。。。
如果项目没有设置布尔属性,则可以使用“!”找到属性未设置为true的项目引用。e、 筛选器:{property:'!'+true}
例如:
$scope.users = [
{
name : 'user1 (registered)',
registered : true
},
{
name : 'user2 (unregistered)'
},
{
name : 'user3 (registered)',
registered : true
},
{
name : 'user4 (unregistered)'
}
要获取未注册用户筛选器,请执行以下操作:
<h3>Unregistered Users</h3>
<div ng-repeat="user in users | filter:{registered:'!'+true}">
<div class="row-fluid">
<div class="span2">
{{user.name}}
</div>
</div>
</div>
未注册用户
{{user.name}
当我尝试使用AngularJS 1.2时,如果我引用false表达式,则它的计算结果是正确的:filter:{registered:'false}看起来它在1.2.2中根本不起作用(Stringized或not),有人可以确认吗?编辑:没关系,我的问题是在对象迭代上筛选对于嵌套对象,语法从1.2更改为1.3,请参见此答案item
应该来自哪里?@ZJRollyson item是筛选方法idRegirstered(item)
的参数。过滤通过将user
对象传递给过滤方法并计算布尔返回值来工作。不可能反转过滤方法。您必须在筛选器方法内部执行如下反转:$scope.isUnregistered=function(item){return!item.registered;}
并像这样使用它过滤器:isUnregistered