0

如何最多运行ng-repeat2 次,但每次迭代都应满足condition并输出具有两个元素的最终数据。例如,我有一个像这样的数组:

$scope.users = [
    {
        id: '1',
        name:'Ali',
        status: true
    },
    {
        id: '2',
        name:'Wajahat',
        status: false
    },
    {
        id: '3',
        name:'Hammad',
        status: true
    },
    {
        id: '4',
        name:'Ahmad',
        status: true
    }
];

HTML是这样的:

<div ng-repeat="user in users | limitTo:2" ng-if="user.status==true">{{user.name}}</div>

问题是,我只得到 1 个元素作为输出,即Ali而不是AliHammad。因为ng-repeat在第二次迭代后停止并且没有检查其他元素。那么,如何在给定的限制下通过status==true获取所有匹配元素?

4

1 回答 1

4

您可以链接filter到您的ng-repeat表达式以在开始之前应用您首先需要的条件过滤limitTo

请注意,在这种方法中,表达式的顺序很重要。

angular
  .module('app', [])
  .controller('ctrl', function ($scope) {
    $scope.users = [
      {
        id: '1',
        name:'Ali',
        status: true,
      },
      {
        id: '2',
        name:'Wajahat',
        status: false,
      },
      {
        id: '3',
        name:'Hammad',
        status: true,
      },
      {
        id: '4',
        name:'Ahmad',
        status: true,
      }
    ];
    
  });
<div ng-app="app" ng-controller="ctrl">
  <div ng-repeat="user in users | filter:{status: true} | limitTo:2">{{ user.name }}</div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular.min.js"></script>

于 2018-11-19T22:16:22.433 回答