用于构建表的2D循环

时间:2016-01-05 22:14:23

标签: javascript angularjs loops

我想循环遍历angularjs中的二维结构,以将其显示在表格中。数据如下:

data = {
    "keyA": ["valueA", "valueB"],
    "keyB": ["valueC", "valueD"]
}

输出应如下所示:

<table>
    <tr>
        <th>keyA</th>
        <td>valueA</td>
    </tr>
    <tr>
        <th>keyA</th>
        <td>valueB</td>
    </tr>
    <tr>
        <th>keyB</th>
        <td>valueC</td>
    </tr>
    <tr>
        <th>keyB</th>
        <td>valueD</td>
    </tr>
</table>

目前我的角色丰富的html不起作用,看起来如下:

<table>
    <div ng:repeat="(key, values) in data">
    <div ng:repeat="value in values">
    <tr>
        <td>{{key}}</td>
        <td>{{value}}</td>
    </tr>
    </div>
    </div>
</table>

在这种情况下,我使用<div>元素,但它不起作用,因为显然<div>不属于<table>类似那。有没有找到No-Op-Element,我必须使用这样的循环?

2 个答案:

答案 0 :(得分:0)

我不确定这是否可行。也许有人可以比我更有创意。你可以尝试这样的事情:

控制器 -

var data = {
    "keyA": ["valueA", "valueB"],
    "keyB": ["valueC", "valueD"]
};

$scope.getPairs = function() {
  var ret = [];

  for(var key in data) {
    for(var i = 0; i < data[key].length; i++) {
      ret.push(key, data[key][i]);
    }
  }

  return ret;
}

HTML -

<table>
  <tr ng-repeat="pair in getPairs() track by $index">
      <td>{{pair[0]}}</td>
      <td>{{pair[1]}}</td>
  </tr>
</table>

答案 1 :(得分:0)

您可以在ngRepeat<tr>元素上添加<tbody>

<table>
    <tbody ng-repeat="(key, values) in data">
        <tr ng-repeat="value in values">
            <th>{{key}}</th>
            <td>{{value}}</td>
        </tr>
    </tbody>
</table>

better consistency between browsers