从ng-repeat中的restrictTo中排除隐藏的元素

时间:2014-10-22 15:12:39

标签: angularjs angularjs-ng-repeat ng-repeat

需要帮助。这是我一直在寻找的解决方案..  我试图从数组中显示6个元素,不包括隐藏元素。即:如果技术上有两个隐藏元素,则必须显示8个元素。我不想增加绑定到limitTo的范围对象,因为它正在做很多复杂化。有没有什么办法可以使用过滤器将limitTo保持为常量并绕过limitTo过滤器,如果该元素被隐藏。我一直在寻找解决方案几天。什么都没有成功。如果有人可以提供帮助,我将非常感激。

<div data-ng-repeat="user in vm.userList | limitTo: '6" ng-hide="user.checked">

  <input type="checkbox" ng-model="user.checked"> {{user.name}}</input>

</div>

1 个答案:

答案 0 :(得分:0)

你需要改变一点方法。而不是ng-hide使用filter,请参阅下面的示例

&#13;
&#13;
var app = angular.module('app', []);

app.controller('fCtrl', function($scope) {
  var vm = this;
  vm.userList = [


    {
      name: 1,
      checked: true
    }, {
      name: 2,
      checked: false
    }, {
      name: 3,
      checked: true
    }, {
      name: 4,
      checked: false
    }, {
      name: 5,
      checked: false
    }, {
      name: 6,
      checked: false
    }, {
      name: 7,
      checked: false
    }, {
      name: 8,
      checked: false
    }, {
      name: 9,
      checked: false
    }, {
      name: 10,
      checked: false
    }, {
      name: 11,
      checked: false
    },


  ];

  return vm;

});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app">
  <div ng-controller="fCtrl as vm">

    <div data-ng-repeat="user in vm.userList | filter: {checked:false}| limitTo: 6">

      {{$index+1}})
      <input type="checkbox" ng-model="user.checked">{{user.name}}</input>

    </div>
  </div>
</div>
&#13;
&#13;
&#13;