2016-10-20 78 views
0

我创建了一些动态的表,它们都有一些行也是使用Angular动态创建的。隐藏容器,如果所有的孩子都隐藏在角

我的目标是让每个表都隐藏,如果该表的tbody中没有可见的行。

<table ng-repeat="package in listOfPackages" ng-if="this.getElementsByTagName('tbody')[0].childNodes.length > 0 "> 
    <tbody> 
    <tr ng-repeat="thing in package.things" ng-if="thing.status === 'interesting'"> 
     <td>{{thing.someInfo}}</td> 
     <td>{{thing.someOtherInfo}}</td> 
    </tr> 
    </tbody> 
</table> 

线ng-if="this.getElementsByTagName('tbody')[0].childNodes.length > 0"似乎是我的问题 - 我不知道正确的方式找到一个元素的自己的孩子,并检查它多少有明显的。

是否有任何可能的方式来做到这一点在角?

+0

您可以使用返回真/假取决于条件的函数 – Akis

回答

0

在你的控制器类似

$scope.showPackageTable = function (package) { 
    var toShow = false; 
    for (var thing in package.things) { 
     if (thing.status === 'interesting') { toShow = true; } 
    } 
    return toShow; 
} 

创建一个功能,那么你可以使用在你的HTML ng-if="showPackageTable(package)"