$scope is an object that connect View with Controller. It holds the model data that we need to pass to view.
Short Project On Scope with description :
Short Project :
HTML :
<!DOCTYPE html>
<html ng-app xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>$scope</title>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js">
</head>
<body>
<div ng-controller = "ContactController">
<form>
<label>Name :</label>
<input type="text" name="name" ng-model = "newcontact.name" />
<br /><br />
<label>Email :</label>
<input type="text" name="email" ng-model = "newcontact.email" />
<br /><br />
<label>Phone :</label>
<input type="text" name="phone" ng-model = "newcontact.phone" />
<br /><br />
<input type="hidden" ng-model="newcontact.id" />
<input type="button" value="Save" ng-click = saveContact()">
</form>
<table>
<thead>
<tr>
<th>Name</th>
<th>E-Mail</th>
<th>Phone</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<tr ng-repeat = "contact in contacts">
<td>{{contact.name}}</td>
<td>{{contact.email}}</td>
<td>{{contact.phone}}</td>
<td>
<a href="#" ng-click="edit(contact.id)">edit</a> |
<a href="#" ng-click="delete(contact.id)">delete</a>
</td>
</tr>
</tbody>
</table>
</div>
</body>
</html>
JavaScript :
<script type="text/javascript">
var uId = 0;
function ContactController($scope) {
$scope.newcontact = null;
$scope.contacts = [];
//Save
$scope.saveContact = function () {
if ($scope.newcontact.id == null) {
//if id null then add
uId = uId + 1;
$scope.newcontact.id = uId;
$scope.contacts.push($scope.newcontact);
}
else {
// if id is not null then update this contact by it's id
for (i in $scope.contacts) {
if ($scope.contacts[i].id == $scope.newcontact.id) {
$scope.contacts[i] = $scope.newcontact;
}
}
}
//clear the add contact form
$scope.newcontact = null;
}
//Edit
$scope.edit = function (id) {
for (var i in $scope.contacts) {
if ($scope.contacts[i].id == id) {
//we use angular.copy() method to create
//copy of original object
$scope.newcontact = angular.copy($scope.contacts[i]);
}
}
}
//Delete
$scope.delete = function (id) {
for (var i in $scope.contacts) {
if ($scope.contacts[i].id == id) {
$scope.contacts.splice(i, 1);
$scope.newcontact = {};
}
}
}
}
</script>