I am relatively new to Angular and need to put together an application to update / save / display values. The code is working, but I wanted your input the make sure that I am doing this 'the angular way'.
JavaScript
var app = angular.module('store', []);
app.controller('TableController', ['$scope', '$log',function($scope, $log){
$scope.family = familyMembers;
$scope.SaveMember = function() {
var saveMember = { name: $scope.name, age: $scope.age };
if ($scope.editItem == -1) {
$scope.family.push(saveMember);
// insert in db here
}
else {
$scope.family[$scope.editItem] = saveMember;
$scope.editItem = -1;
// update db here
}
Init();
};
$scope.DeleteMember = function(idx) {
$scope.family.splice(idx,1);
// delete from db here
}
$scope.EditMember = function(idx){
$scope.name = $scope.family[idx].name;
$scope.age = $scope.family[idx].age;
$scope.editItem = idx;
$scope.buttonText = 'Update';
}
function Init() {
$scope.name = '';
$scope.age = '';
$scope.editItem = -1;
$scope.buttonText = 'Add new';
}
Init();
}]);
var familyMembers = [
{ name: "Joe", age: 42}
, { name: "Jane", age: 40}
, { name: "Bob", age: 13}
];
HTML
<html ng-app="family">
<head>
<link href="./css/bootstrap.min.css" rel="stylesheet" type="text/css" />
<style>
.ng-valid.ng-dirty {border-color: green}
.ng-invalid.ng-dirty{border-color: red}
table tr td {padding: 4px}
[ng-click] {cursor: pointer}
</style>
</head>
<body>
<div ng-controller="FamilyController" style="margin: 40px">
<h1>Family Members:</h1>
<table>
<tr ng-repeat="p in family track by $index">
<td ng-click="EditMember($index)">{{p.name}}</td>
<td>{{p.age}}</td>
<td><a href ng-click="DeleteMember($index)">X</a></td>
</tr>
</table>
<hr>
<h1>Add member</h1>
name <br>
<input type="text" ng-model="name"><br>
age <br>
<input type="number" ng-model="age"><br><br>
<input type="button" value="{{buttonText}}" ng-click="SaveMember()" />
</div>
<br><br>
</body>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script>
<script src="./js/app.js"></script>
</html>