接收动态数据时在表中垂直和水平ng重复

时间:2018-07-27 13:51:12

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

我正在尝试在表格中显示数据。
行和列是动态的。
我想使用ng-repeat

我正在以这种形式接收数据:

headers: [
  0: {"heading1"},
  1: {"heading2"},
  2: {"heading3"}
]
data: [
  0:{ id:1, code:"Barry" , description:"Allen" }
  1:{ id:2, code:"Naruto" , description:"Uzumaki" }
  2:{ id:3, code:"Hannah" , description:"Montana" }        
] 

我尝试过这种方式:

<thead>
  <tr>
    <td ng-repeat="c in headersData">
      {{c}}
    </td>
  </tr>
</thead>
<tbody>
  <tr ng-repeat="c in columnData">
    <td>{{c.id}}</td>
    <td>{{c.code}}</td>
    <td>{{c.description}}</td>
  </tr>
</tbody>

但是它没有呈现thead
有解决办法吗?

3 个答案:

答案 0 :(得分:1)

var app = angular.module('testApp',[])
app.controller('MainController',function($scope) {
   $scope.headersData =  [
 "heading1",
 "heading2",
 "heading3"
];
 $scope.columnData =  [
  { id:1, code:"Barry" , description:"Allen" },
  { id:2, code:"Naruto" , description:"Uzumaki" },
  { id:3, code:"Hannah" , description:"Montana" }        
] ;
});
<!DOCTYPE html>
<html ng-app="testApp">

<head>
  <script data-require="angular.js@*" data-semver="4.0.0" 
  src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.10/angular.min.js">
  </script>
  <link rel="stylesheet" href="style.css" />
  <script src="script.js"></script>
</head>

<body ng-controller="MainController">
 <table>
  <tr>
    <th ng-repeat="th in headersData">{{th}}</th>
  </tr>
  <tr ng-repeat="x in columnData">
    <td>{{x.code}}</td>
  </tr>
</table>
</body>

</html>

答案 1 :(得分:0)

当您收到类似标题的数组时,必须为键和值对定义一个变量名。试试这个:

selected: any =  '2';

<mat-form-field>
    <mat-select placeholder="Toppings" [(ngModel)]="selected" [formControl]="toppings">
        <mat-option *ngFor="let topping of list" [value]="topping.id" [disabled]="selected === '2' && topping.id === '1'">{{topping.name}}</mat-option>
    </mat-select>
</mat-form-field>

答案 2 :(得分:0)

首先,这是错误的做法。 有一种方法可以使用ng-repeat="(key,value) in yourjson格式。

所以请先检查一下。

并且您的标头不应以这种方式声明。或换句话说,不应以这种方式呈现。您正在做c in headers,它将为您提供对象。 {heading1 },依此类推。 这是一个非常基本的问题,Stack Overflow中已经提供了许多答案。

做类似的事情, ng-repeat="x in headers"

并将标题定义为 headers= ["heading1","heading2","heading3"] 因为您声明的不是有效的JSON。

要检查JSON的有效性,您可以检出JsonLint