Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 获取ng Show显示的列表的长度_Angularjs_Ngtable - Fatal编程技术网

Angularjs 获取ng Show显示的列表的长度

Angularjs 获取ng Show显示的列表的长度,angularjs,ngtable,Angularjs,Ngtable,我用的是Vraptor+Angular,问题很简单。 我用ng show隐藏了表中的一些行,但我想获取显示的实际行的计数/长度 示例:我有10条$data记录。但当我使用ng show时,它只显示5条记录。当我使用$data.length时,它返回10,但我希望它返回5 表格: <table data-ng-table="$tableUsuario.params"> <tbody > <tr data-ng-repeat="usuario i

我用的是Vraptor+Angular,问题很简单。 我用ng show隐藏了表中的一些行,但我想获取显示的实际行的计数/长度

示例:我有10条$data记录。但当我使用ng show时,它只显示5条记录。当我使用$data.length时,它返回10,但我希望它返回5

表格:

<table data-ng-table="$tableUsuario.params">
    <tbody >
        <tr data-ng-repeat="usuario in $data | filter:search:strict" 
         data-ng-show="usuario.ativo == filtroAtivo && (filtroPerfil == null || usuario.perfil == filtroPerfil )">

我对这个问题有点困惑,但你能用:

$data.length
获取数据的总计数

ng repeat
$index
,以获取当前行/长度


然后,您可以在
ng show

中使用这两个值,一方面,您可以检查DOM并查看有多少可见行,这将回答您的问题,但这是一个非常糟糕的解决方案,这将使angular应用程序的性能更差,而不是真正的angular-ish方式

另一个选项是创建自己的过滤器并使用它,在这种情况下,您将能够知道过滤器中有多少项

在我看来,第三个最好的选择是创建另一个范围变量,并仅用筛选的项填充它,当然,您需要将其与主列表保持同步,并且可以使用范围的
$watch
$watchCollection
方法来完成

.... 
$scope.$data = [ ...]

function ativoOrPerfil(item) {
  return item.ativo == filtroAtivo && (filtroPerfil == null || item.perfil == filtroPerfil )

}

function updateFiltered() {
   $scope.$dataFiltered = $scope.$data.filter(ativoOrPerfil)
}

$scope.$watch('filtroAtivo', updateFiltered)
$scope.$watch('filtroPerfil', updateFiltered)

尽管请记住,由于您使用的是严格筛选,然后是您自己的筛选,您需要调整updateFiltered,以包括所有3个条件—筛选、ATIO和危险

,但现在还不清楚您在这里想要实现什么。在同一个
ng repeat
中同时使用
filter
ng show
有点多余。如果您只使用一个过滤器,您可以对过滤器结果进行别名,但是如果您想通过
ng show
也过滤掉的内容进一步减少计数,您必须编写自己的算法来计算计数。例如:我有10条$data记录。但当我使用ng show时,只显示5条记录。使用$data.length时,返回10。但我想回报你。明白了吗?啊,好的。然后像@vittore提到的那样,您可能需要自己的自定义筛选器或创建一个新的范围变量。谢谢您的回答和解释。我想我会创建自己的过滤器并停止使用ng show。