xxxxxxxxxx
<html lang="en" ng-app="app">
<head>
<meta charset="UTF-8">
<title>Budget</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css">
<style type="text/css">
table {
table-layout: fixed;
}
table td, table td {
overflow: hidden;
}
</style>
<script src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.0-beta.13/angular.min.js"></script>
<script type="text/javascript">
var app = angular.module('app', []);
app.controller('DefaultCtrl', function($scope) {
$scope.workers = [
{
'name': 'Andrey',
'age': 22,
'gender': 'M'
},
{
'name': 'Carlos',
'age': 19,
'gender': 'M'
},
{
'name': 'Julia',
'age': 14,
'gender': 'F'
}
];
$scope.addRow = function() {
$scope.worker = {};
$scope.addingItem = true;
};
$scope.addWorker = function(worker) {
$scope.workers.push(angular.copy(worker));
delete $scope.worker;
$scope.addingItem = false;
};
$scope.removeRow = function() {
delete $scope.worker;
$scope.addingItem = false;
};
$scope.removeWorker = function(worker) {
var index = $scope.workers.indexOf(worker);
$scope.workers.splice(index, 1);
}
});
app.filter('gender', function() {
return function(input) {
if (input == 'M') {
return 'Male';
} else {
return 'Female';
}
};
});
//Picked from https://gist.github.com/EpokK/5884263
app.directive('ngEnter', function() {
return function(scope, element, attrs) {
element.bind("keydown keypress", function(event) {
if (event.which === 13) {
scope.$apply(function(){
scope.$eval(attrs.ngEnter);
});
event.preventDefault();
}
});
};
});
</script>
</head>
<body>
<div class="container" ng-controller="DefaultCtrl">
<table class="table">
<thead>
<tr>
<th style="width: 50%">Name</th>
<th style="width: 25%">Gender</th>
<th style="width: 20%">Age</th>
<th style="width: 5%"></th>
</tr>
</thead>
<tbody>
<tr ng-repeat="worker in workers">
<td>{{ worker.name }}</td>
<td>{{ worker.gender | gender }}</td>
<td>{{ worker.age }}</td>
<td><i class="fa fa-close" ng-click="removeWorker(worker)"></i></td>
</tr>
<tr ng-if="addingItem">
<td><input type="text" class="form-control" placeholder="Name" ng-model="worker.name"></td>
<td><select class="form-control" ng-model="worker.gender">
<option value="M">Male</option>
<option value="F">Female</option>
</select></td>
<td><input type="number" class="form-control" placeholder="Age" ng-model="worker.age" ng-enter="addWorker(worker)"></td>
<td><i ng-click="removeRow()" class="fa fa-close"></i></td>
</tr>
</tbody>
</table>
<div ng-if="addingItem">
<pre>{{ worker | json }}</pre>
</div>
<button ng-click="addRow()" class="btn btn-default" ng-disabled="addingItem"><i class="fa fa-plus"></i></button>
</div>
</body>
</html>
Modified http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js to a secure url
Modified http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.0-beta.13/angular.min.js to a secure url
https://code.jquery.com/jquery-2.1.1.min.js
https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js
https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.0-beta.13/angular.min.js