Angular Expandable Table Rows

by lekhrajpanjwani

HTML

<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular-animate.min.js"></script>
<div ng-controller="itemsController" class="box">
    
    <table border="1">
        <tr ng-repeat-start="group in groups">
            <td>
                {{group.name}}
                <em>{{expanded}}</em>
            </td>
            <td>Values: {{group.values.length}}</td>
            <td>lekhraj panjwani
                <button type="button" ng-click="expanded =! expanded">
                    Expand
                </button>
            </td>
        </tr>
        <tr ng-repeat-end ng-show="expanded">
            <td colspan="3">
                <ul>
                    <li ng-repeat="value in group.values">
                        {{value}}
                    </li>
                </ul>
            </td>
        </tr>
    </table>
    
</div>

CSS

html, body{
    font-family: sans-serif;
}

.box {
    border: 1px solid gray;
    margin: 0.5em;
    padding: 0.5em;
}

JavaScript

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

app.controller('itemsController', function( $scope ) {
    
    $scope.groups = [
        {name:'Letters', values:['a','b','c']},
        {name:'Odd Numbers', values:[1,3,5,7]},
        {name:'Even Numbers', values:[2,4,6,8]}
    ];
    
});