表行中的ng-repeat-start - 基于ng-show true的计数

时间:2018-06-07 06:45:03

标签: angularjs

我有一个表格,根据ng-show显示内容。

<tr ng-repeat-start ="row in values" ng-show="applName.indexOf(row.some_name) == -1 || !checkVal"> 
<td></td> 
</tr>

applName是一个数组,如果选中了我的复选框(checkVal),我想要过滤一些值。

我需要计算实际显示的行数。

我如何实现它?我尝试过计数,但计数显示总计数而不是显示的实际计数。

修改

我将过滤器逻辑移动到控制器。

<tr ng-repeat-start ="row in results = (values | filter:myFilter('filter_field',chekVal)"> 
<td></td> 
</tr>
{{results.length}}

但是现在因为我使用分页,计数只会是单页中的计数而不是页面总数。我必须改变分页的逻辑吗?

1 个答案:

答案 0 :(得分:0)

尝试使用自定义过滤器功能ng-repeat阵列,然后根据条件过滤数组,这样您就不需要ng-show plus了,您将获得准确的计数

练习1:

 $scope.filterFun= function(){
 // Do some tests

    if(condition)
    {
        return true; // this will be listed in the results
    }

    return false; 
}
 ng-repeat = "result in results | filter:filterFun"

练习2: ---控制器代码---

 function MyCtrl($scope){
        $scope.people = [
            {id: 1, name: "Mark"},
            {id: 2, name: "John"},
            {id:3, name: "Joe"}
        ];
        $scope.myFilter = function(item){
            if(item.id === 1){
                return item;
            }
        };
    }

---- Html代码 -

 <div ng-app>
        <div ng-controller="MyCtrl">
           <ul>
               <li ng-repeat="person in people | filter:myFilter">
                   {{person.id}}
                   -
                   {{person.name}}
               </li>
           </ul>
        </div>
    </div>