angularJS 简单合并单元格使用 ng-repeat-start 指令

发布日期 目录 AngularJS

angularJS 简单合并单元格使用 ng-repeat-start 指令

梦想还是要有的,就算实现不了,但还有一段难忘的经历。

这不,今天在做单元格的合并,想了一上午,终于将该问题解决。解决思路便是使用 ng-rapeat-start 与 ng-rapeat-end 指令。

先上一张效果图:

ng-repeat-start 指令

首先,我们需要后台返回的数据是这样的,要求返回的数据是一个数组,而每一个数组里面包含了,合并的列以及一个数组,结构如下:

var data = [
    {
        "nian": "一年级",
        "item": [
            {
                "name": "张三",
                "age": "23"
            },
            {
                "name": "张三",
                "age": "23"
            }
        ]
    },
    {
        "nian": "二年级",
        "item": [
            {
                "name": "张三",
                "age": "23"
            },
            {
                "name": "张三",
                "age": "23"
            }
        ]
    },
    {
        "nian": "三年级",
        "item": [
            {
                "name": "张三",
                "age": "23"
            },
            {
                "name": "张三",
                "age": "23"
            }
        ]
    }
];

其次,我们循环数据时,先循环出第一行记录,然后循环出该合并单元格的其他行记录,而我们的 html 是如下操作数据的:

<table ng-controller="repeatController" border="1">
    <thead>
        <td>年级</td>
        <td>姓名</td>
        <td>年龄</td>
    </thead>
    <tbody>
        <tr ng-repeat-start="group in list">
            <td rowspan="{{group.item.length}}">{{group.nian}}</td>
            <td>{{group.item[0].name}}</td>
            <td>{{group.item[0].age}}</td>
        </tr>
        <tr ng-repeat-end ng-repeat="single in group.item" ng-hide="$first">
            <td>{{single.name}}</td>
            <td>{{single.age}}</td>
        </tr>
    </tbody>
</table>

最后,附上所有的代码,以供参考:

<!DOCTYPE html>
<html lang="en" ng-app="myapp">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="https://cdn.bootcss.com/angular.js/1.6.4/angular.min.js"></script>
</head>
<body>
    <table ng-controller="repeatController" border="1">
        <thead>
            <td>年级</td>
            <td>姓名</td>
            <td>年龄</td>
        </thead>
        <tbody>
            <tr ng-repeat-start="group in list">
                <td rowspan="{{group.item.length}}">{{group.nian}}</td>
                <td>{{group.item[0].name}}</td>
                <td>{{group.item[0].age}}</td>
            </tr>
            <tr ng-repeat-end ng-repeat="single in group.item" ng-hide="$first">
                <td>{{single.name}}</td>
                <td>{{single.age}}</td>
            </tr>
        </tbody>
    </table>


    <script>
        var data = [
            {
                "nian": "一年级",
                "item": [
                    {
                        "name": "张三",
                        "age": "23"
                    },
                    {
                        "name": "张三",
                        "age": "23"
                    }
                ]
            },
            {
                "nian": "二年级",
                "item": [
                    {
                        "name": "张三",
                        "age": "23"
                    },
                    {
                        "name": "张三",
                        "age": "23"
                    }
                ]
            },
            {
                "nian": "三年级",
                "item": [
                    {
                        "name": "张三",
                        "age": "23"
                    },
                    {
                        "name": "张三",
                        "age": "23"
                    }
                ]
            }
        ];
        repeatController = function ($scope){
            $scope.list = data;
        }
        repeatController.$inject = ['$scope'];
        angular.module('myapp',[]).controller('repeatController',repeatController);
    </script>


</body>
</html>

注:angularJS合并单元格,还有一种方法,那就是使用循环指令中的 $index 属性,此种方法日后再说。而我们上面的方法是使用了 $first 属性。

1 条评论发表在 “angularJS 简单合并单元格使用 ng-repeat-start 指令

发表评论

邮箱地址不会被公开。