我有一个表格,根据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}}
但是现在因为我使用分页,计数只会是单页中的计数而不是页面总数。我必须改变分页的逻辑吗?
答案 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>