1. 程式人生 > >《我的Angular入坑記》——通過小例子看ng-repeat

《我的Angular入坑記》——通過小例子看ng-repeat

        為了簡單方便一點,筆者這裡的資料全部都是在前臺硬加上去的,一般專案裡的資料都是通過後臺抓取的。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="angular.min.js"></script>
</head>
<body>
<div ng-app="hd" ng-controller="ctrl">
    <ul>
        <!--{{$first}}第一個  {{$last}}最後一個  {{$middle}}中間的  {{$even}}偶數行  {{$odd}}奇數行-->
        <li ng-repeat="(k,v) in data" style="{{k==0?'color:red':''}}">
            <!--k是下標-->
            {{k}}
            名稱:{{v.name}} 網址:{{v.url}}
        </li>
        <hr/>
        <li ng-repeat="(k,v) in data" style="{{$even?'color:red':''}}">
            <span ng-if="$first" style="{{$first?'color:red':''}}">名稱:{{v.name}} 網址:{{v.url}}</span>
            <span ng-if="$middle">名稱:{{v.name}} 網址:{{v.url}}</span>
            <span ng-if="$last" style="{{$last?'color:green':''}}">名稱:{{v.name}} 網址:{{v.url}}</span>
        </li>
        <hr/>
        <!--以下標為判斷唯一性的標誌,若有兩個相同的元素則都輸出-->
        <li ng-repeat="v in info track by $index">
            {{v}}
        </li>
    </ul>
</div>
<script>
    var m = angular.module('hd', []);
    m.controller('ctrl', ['$scope', function ($scope) {
        $scope.data = [
            {name: '麻花騰', url: 'mht.com'},
            {name: '麻雲', url: 'my.com'},
            {name: '李彥紅', url: 'lyh.com'},
        ];
        $scope.info=['麻花騰','麻雲','李彥紅','BAT','BAT'];
    }]);
</script>
</body>
</html>

        上述demo中的  (k,v) in data 是為了能在迴圈資料的同時對特別的資料進行操作,如何判斷那一個是我們想要操作的資料呢?只能通過下標來判斷,所以就需要新增一個下標k的標識來輔助我們進行判斷。

        同時,如果存放資料的陣列或者物件中有相同的資料,但是你又想要都輸出,那麼在使用ng-repeat進行遍歷的時候就需要特別加上一句話    track by $index       以下標為判斷唯一性的標誌,而不是判斷內容是否相同。