从ng-repeat中排除嵌套数组中的元素,而不使用ng-if

时间:2018-02-07 23:11:13

标签: javascript angularjs multidimensional-array angularjs-ng-repeat

给定嵌套数组,如何在ng-repeat中过滤这些值,而不必使用ng-if。

不使用ng-if的原因是我需要零值来不占用$ index,因为我需要将该索引与此视图中发生的其他内容匹配。所以例如这对我来说不起作用:

<tr ng-if="row.value[0] !== 0 || row.value[1] !== 0" ng-repeat="row in chart.values track by $index">

在下图中,例如,如果值[0]或值[1]在亚洲/印度下为零,那么它们不应出现在ng-repeat中。数据如下:

enter image description here

2 个答案:

答案 0 :(得分:1)

您可以使用ng-show并在方法中进行评估;这将保留$index&#39; es:

$scope.showRow = function(row) {
  return row.value[0] !== 0 || row.value[1]!== 0
}
<tr ng-repeat="row in chart.values track by $index" ng-show="showRow(row)">

<强>更新即可。如果您不想保留$index,则可以将上述showRow修改为:

$scope.showRow = function(row) {
  return !(row.value[0] == 0 || row.value[1] == 0)
}

然后将其用作filter代替:

<tr ng-repeat="row in chart.values | filter:showRow track by $index">

由此跟踪的$index&#39; es将为0,1,2,3,4 ...等,无论滤出的是什么。

答案 1 :(得分:0)

快速建议:在您生成阵列的地方执行业务逻辑,而不是在ng-repeat中执行

类似于此处,但不是更改数据源,而是进行比较:angular.js ng-repeat - check if conditional is true then use another collection