布尔值上的ng-repeat过滤器

los*_*ion 61 angularjs angularjs-ng-repeat angularjs-filter

我试图在ng-repeat中过滤一个布尔值.

未注册用户列表:

    <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>
Run Code Online (Sandbox Code Playgroud)

注册用户列表:

    <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>
Run Code Online (Sandbox Code Playgroud)

有没有一种很好的方法来过滤注册和!注册.

alf*_*ian 118

按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>
Run Code Online (Sandbox Code Playgroud)

JSFiddle:http://jsfiddle.net/alfrescian/9ytDN/

  • 当我使用AngularJS 1.2进行尝试时,如果我引用它,则false表达式只能正确计算:filter:{registered:'false'} (23认同)
  • 对于嵌套对象,语法从1.2更改为1.3,请参见以下答案http://stackoverflow.com/a/28160037/595152 (2认同)

Gio*_*rgi 13

在控制器中创建一个方法,该方法根据您需要的逻辑返回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>
Run Code Online (Sandbox Code Playgroud)

  • 无法反转滤波器方法.你必须在filter方法中进行反转,如下所示:`$ scope.isUnregistered = function(item){return!item.registered; ``并使用它像`filter:isUnregistered` (2认同)

小智 6

如果项目没有设置布尔属性,则可以使用"!"找到属性未设置为true的项目.带引号.ex filter:{property:'!'+ true}.

例:

$scope.users = [
        {
            name : 'user1 (registered)',
            registered : true
        },
        {
            name : 'user2 (unregistered)'
        },
        {
            name : 'user3 (registered)',
            registered : true
        },
         {
            name : 'user4 (unregistered)'
        }
Run Code Online (Sandbox Code Playgroud)

要获取未注册的用户过滤器:

<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>
Run Code Online (Sandbox Code Playgroud)