如何根据通过ng-iterate

时间:2017-11-03 15:48:22

标签: angularjs html-table

我正在使用angularjs填充如下表:

<table>
  <thead>
    <tr>
      <th>col1</th>
      <th>col2</th>
      <th>col3</th>
      <th>col4</th>
      <th>col5</th>
    </tr>
  </thead>
  <tbody>
    <tr ng-repeat="row in rows">
      <td>{{row.col1}}</td>
      <td>{{row.col2}}</td>
      <td>{{row.col3}}</td>
      <td>{{row.col4}}</td>
      <td>{{row.col5}}</td>
    </tr>
  </tbody>
</table>

因为表中有很多列通常不包含任何值(NULL),所以我想隐藏这些列 注意:所有行的列值都为NULL。

示例(row.col1=NULLrow.col3=NULL):

<table>
  <thead>
    <tr>
      <th>col2</th>
      <th>col4</th>
      <th>col5</th>
    </tr>
  </thead>
  <tbody>
    <tr ng-repeat="row in rows">
      <td>{{row.col2}}</td>
      <td>{{row.col4}}</td>
      <td>{{row.col5}}</td>
    </tr>
  </tbody>
</table>
到目前为止,我无法找到/找出解决方案。

我开始相信这是不可能的......

2 个答案:

答案 0 :(得分:1)

你可以为一个全局数组,为你想要的每一列都有一个布尔变量,并相应地设置这个布尔值。

SET NOCOUNT ON;


SELECT FirstName 
FROM dbo.Users WHERE Id = @Id;

使用函数显示列值,以便在遇到非空值时设置布尔值。

 $scope.showColumn = [false, false, false, false];

然后您必须检查布尔值以显示并使用函数作为列值:

  $scope.setVisible = function(colNum, colVal){
    if(colVal)
      $scope.showColumn[ colNum ] =true;
    return colVal;
  };

请参阅Working plunk(尝试向任何朋友提供“没有”属性)

答案 1 :(得分:0)

这在ng-repeat中非常容易。只需使用ng-if。

<table>
  <thead>
    <tr>
      <th>col2</th>
      <th>col4</th>
      <th>col5</th>
    </tr>
  </thead>
  <tbody>
    // ADD NG-IF TO YOUR REPEATER
    <tr ng-repeat="row in rows" ng-if="row.col1 != null">
      <td>{{row.col2}}</td>
      <td>{{row.col4}}</td>
      <td>{{row.col5}}</td>
    </tr>
  </tbody>
</table>