【发布时间】:2014-01-23 06:46:00
【问题描述】:
当表格没有行时,如何有条件地隐藏 HTML 表格?由于我使用过滤器,我事先不知道结果集是否为空。
我正在遍历表行,但即使没有行,外部表(包括 thead)也会被渲染。如何内省结果数组的长度并将该信息用于 ng-show / ng-hide?p>
【问题讨论】:
-
请出示您的代码。
标签: angularjs html-table
当表格没有行时,如何有条件地隐藏 HTML 表格?由于我使用过滤器,我事先不知道结果集是否为空。
我正在遍历表行,但即使没有行,外部表(包括 thead)也会被渲染。如何内省结果数组的长度并将该信息用于 ng-show / ng-hide?p>
【问题讨论】:
标签: angularjs html-table
有一些可能的解决方案,但最好的解决方案取决于您的要求和限制。如果它不是一个庞大的应用程序,并且您不希望未过滤的数组中有太多项目,那么最好的解决方案可能是简单地使用具有相同过滤器的 ng-show:
<table ng-show="(items | filter:criteria).length">
<tr ng-repeat="item in items | filter:criteria">...</tr>
</table>
但请记住,您的过滤器将在每个摘要循环中遍历数组的所有项目两次。如果性能可能是一个问题,那么您可能希望您的控制器为您消化此值并将其绑定到您的范围:
controller('YourCtrl', function($scope, $filter) {
// $watchCollection available in version 1.1+
$scope.$watchCollection('items', function(newVal) {
$scope.filteredItems = $filter('filter')(newVal, $scope.criteria);
});
});
在您的 HTML 中:
<table ng-show="filteredItems.length">
<tr ng-repeat="item in filteredItems">...</tr>
</table>
【讨论】: