天天看點

AngularJS 表格

ng-repeat 指令可以完美的顯示表格。

使用 angular 顯示表格是非常簡單的:

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<script src="https://cdn.bootcss.com/angular.js/1.6.3/angular.min.js"></script>

</head>

<body>

<div ng-app="myApp" ng-controller="customersCtrl">

<table>

<tr ng-repeat="x in names">

<td>{{ x.Name }}</td>

<td>{{ x.Country }}</td>

</tr>

</table>

</div>

<script>

var app = angular.module('myApp', []);

app.controller('customersCtrl', function($scope, $http) {

$http.get("/try/angularjs/data/Customers_JSON.php")

.then(function (result) {

$scope.names = result.data.records;

});

</script>

v1.5 中<code>$http</code> 的 <code>success</code> 和 <code>error</code> 方法已廢棄。使用 <code>then</code> 方法替代。 如果你使用的是 v1.5 以下版本,可以使用以下代碼:

&lt;?php

echo &lt;&lt;&lt;EOT

{

"records":[

{"Name":"Alfreds Futterkiste","City":"Berlin","Country":"Germany"},

{"Name":"Ana Trujillo Emparedados y helados","City":"México D.F.","Country":"Mexico"},

{"Name":"Antonio Moreno Taquería","City":"México D.F.","Country":"Mexico"},

{"Name":"Around the Horn","City":"London","Country":"UK"},

{"Name":"B's Beverages","City":"London","Country":"UK"},

{"Name":"Berglunds snabbköp","City":"Luleå","Country":"Sweden"},

{"Name":"Blauer See Delikatessen","City":"Mannheim","Country":"Germany"},

{"Name":"Blondel père et fils","City":"Strasbourg","Country":"France"},

{"Name":"Bólido Comidas preparadas","City":"Madrid","Country":"Spain"},

{"Name":"Bon app'","City":"Marseille","Country":"France"},

{"Name":"Bottom-Dollar Marketse","City":"Tsawassen","Country":"Canada"},

{"Name":"Cactus Comidas para llevar","City":"Buenos Aires","Country":"Argentina"},

{"Name":"Centro comercial Moctezuma","City":"México D.F.","Country":"Mexico"},

{"Name":"Chop-suey Chinese","City":"Bern","Country":"Switzerland"},

{"Name":"Comércio Mineiro","City":"São Paulo","Country":"Brazil"}

]

}

EOT;

?&gt;

為了讓頁面更加美觀,我們可以在頁面中使用CSS:

&lt;style&gt;

table, th , td {

  border: 1px solid grey;

border-collapse: collapse;

  padding: 5px;

table tr:nth-child(odd) {

background-color: #f1f1f1;

table tr:nth-child(even) {

background-color: #ffffff;

&lt;/style&gt;

排序顯示,可以使用 orderBy 過濾器: 

  &lt;tr ng-repeat="x in names | orderBy : 'Country'"&gt;

    &lt;td&gt;{{ x.Country }}&lt;/td&gt;

使用 uppercase 過濾器轉換為大寫: 

  &lt;tr ng-repeat="x in names"&gt;

    &lt;td&gt;{{ x.Country

| uppercase }}&lt;/td&gt;

表格顯示序号可以在 &lt;td&gt; 中添加 $index: 

&lt;td&gt;{{ $index + 1 }}&lt;/td&gt;

    &lt;td&gt;{{ x.Name }}&lt;/td&gt;

&lt;td ng-if="$odd"

style="background-color:#f1f1f1"&gt;{{ x.Name }}&lt;/td&gt;

&lt;td ng-if="$even"&gt;{{

x.Name }}&lt;/td&gt;

&lt;td ng-if="$odd" style="background-color:#f1f1f1"&gt;{{

x.Country }}&lt;/td&gt;

&lt;td ng-if="$even"&gt;{{ x.Country }}&lt;/td&gt;