如何使用ng-repeat显示数组

时间:2019-03-22 23:13:22

标签: angularjs html-table angularjs-ng-repeat

我有以下形式的json数组:

{ 
  "School1":  [{"name": "john", "age":"28"},
              {"name": "paul", "age":"27"}],
  "School2":  [{"name": "david", "age":"27"},
               {"name": "sil", "age":"28"}] 
}

如何使用Angular中的ng-repeat以这种形式在表格中显示:

----------
Name |  Age
----------
School1            
----------
john | 28
----------
paul | 2
----------
School2
----------
david| 27
----------
sil| 28
----------

我将对此有所帮助。

1 个答案:

答案 0 :(得分:0)

您可以对数据执行一些操作,还可以使用修改后的结构创建另一个对象,以便它可以与ng-repeat一起使用,以所需的形式显示表。

您可以通过一个示例更好地理解这一点。

这是您要在表格视图中显示的数据

 $scope.testData = { 
      "School1":  [{"name": "john", "age":"28"},
                  {"name": "paul", "age":"27"}],
      "School2":  [{"name": "david", "age":"27"},
                   {"name": "sil", "age":"28"}] 
    }

我们对“ testData”执行一个操作,以标识此JSON对象中的键“ School1”和“ School2”。下一行执行该操作。

$scope.keys = Object.keys($scope.testData);

$ scope.keys将是一个键数组:["School1",School2"];

然后,您可以遍历键的数组并创建另一个可以与HTML代码中的ng-repeat一起使用的对象。 执行以下代码创建该对象(tableData):

$scope.tableData=[];
    //Iterating on array of keys
    $scope.keys.forEach(element => {
           $scope.tableData.push({
                 column : element,
                 data : $scope.testData[element]  //Getting your data from testData 
           });
     });

将在控制器中使用的最终代码段为:

    $scope.testData = { 
        "School1":  [{"name": "john", "age":"28"},
                    {"name": "paul", "age":"27"}],
        "School2":  [{"name": "david", "age":"27"},
                     {"name": "sil", "age":"28"}] 
    }

    $scope.keys = Object.keys($scope.testData);   

    $scope.tableData=[];
    $scope.keys.forEach(element => {
        $scope.tableData.push({
            column : element,
            data : $scope.testData[element]
        });
    });

您的HTML代码将如下所示:

<table>
    <tr>
        <th>Name |</th>
        <th>Age</th>
    </tr>
</table>
<table ng-repeat="table in tableData">
    <tr>
        <th>{{table.column}}</th>
    </tr>
    <tr ng-repeat="row in table.data">
        <td>{{row.name}} | </td>
        <td>{{row.age}}</td>
    </tr>
</table>

您绝对可以通过编写自己的CSS或包括任何预定义的样式表来美化表视图。 希望对您有帮助!