Introduction
$anchorScroll is the one of the service among the 30 AngularJS built-in services.This blog demonstrates how to use $anchorScroll in AngularJS.
Getting Started
$achonScroll service is used to scroll HTML elements in AngularJS, the scrolling depends on the hash value or $location.hash(). $achonScroll follows rules of HTML specification. This service depends three AngularJS built in services that is $window,$location,$rootScope for scrolling an html element.
This service basically uses in Single Page Application(SPA). Because in Single Page Application(SPA) all the child UI or sub-pages are displaying on one page and whenever any menu clicks, it scrolls respective child view.
Example:-
This following example demonstrates how to use achonScroll service in AngularJS. It displays a list of students in a table in the Student List section and in the bottom(Student details section) of the page, it displays details of a student when double-clicking in a row of table. In the details section, there is a link 'Go-To List', when it is clicked AngularJS application scrolls page to Student list section.For this, this example uses $achonScroll with $location service. The hash function of $location helps to focus the location and $achonScroll scrolls the page to the location, you can use other two services as well. Fore more details please go through this example.
<html ng-app = "myapp">
<title> AngularJS Learning(anchoScroll)</TITLE>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js">
</script>
<script>
var myapp=angular.module("myapp",[]);
myapp.controller("myappcont",function($scope,$anchorScroll, $location){
$scope.student={ID:0,Name:'',Gender:"Male",Class:"1Std",Section:"A"};
$scope.gotdetails=function(student){
$scope.student=student;
if ($location.hash() !== 'stdetails') {
$location.hash('stdetails');
$anchorScroll();
}
}
$scope.gotolist=function(){
if ($location.hash() !== 'stList') {
$location.hash('stList');
$anchorScroll();
}
}
$scope.students=[
{Name:"Kailash",Gender:"Male",Class:"1Std",Section:"A"},
{Name:"Kalyan",Gender:"Male",Class:"1Std",Section:"A"},
{Name:"Kalyani",Gender:"Female",Class:"1Std",Section:"A"},
{Name:"Kamal",Gender:"Male",Class:"2Std",Section:"B"},
{Name:"Keshav",Gender:"Male",Class:"2Std",Section:"B"},
{Name:"KedarGouri",Gender:"Female",Class:"2Std",Section:"B"},
{Name:"Test Student1",Gender:"Male",Class:"1Std",Section:"A"},
{Name:"Test Student2",Gender:"Male",Class:"2nd",Section:"B"},
{Name:"Test Student3",Gender:"Male",Class:"3rd",Section:"C"},
{Name:"Test Student4",Gender:"Male",Class:"1Std",Section:"A"},
{Name:"Test Student5",Gender:"Male",Class:"2nd",Section:"B"},
{Name:"Test Student6",Gender:"Male",Class:"3rd",Section:"C"},
{Name:"Test Student7",Gender:"Male",Class:"1Std",Section:"A"},
{Name:"Test Student8",Gender:"Male",Class:"2nd",Section:"B"},
{Name:"Test Student9",Gender:"Male",Class:"3rd",Section:"C"},
{Name:"Test Student10",Gender:"Male",Class:"1Std",Section:"A"},
{Name:"Test Student11",Gender:"Male",Class:"2nd",Section:"B"},
{Name:"Test Student12",Gender:"Male",Class:"3rd",Section:"C"},
{Name:"Test Student13",Gender:"Male",Class:"1Std",Section:"A"},
{Name:"Test Student14",Gender:"Male",Class:"2nd",Section:"B"},
{Name:"Test Student15",Gender:"Male",Class:"3rd",Section:"C"},
{Name:"Test Student16",Gender:"Male",Class:"1Std",Section:"A"},
{Name:"Test Student17",Gender:"Male",Class:"2nd",Section:"B"},
{Name:"Test Student18",Gender:"Male",Class:"3rd",Section:"C"},
{Name:"Test Student19",Gender:"Male",Class:"1Std",Section:"A"},
{Name:"Test Student20",Gender:"Male",Class:"2nd",Section:"B"},
{Name:"Test Student21",Gender:"Male",Class:"3rd",Section:"C"},
{Name:"Test Student22",Gender:"Male",Class:"1Std",Section:"A"},
{Name:"Test Student23",Gender:"Male",Class:"2nd",Section:"B"},
{Name:"Test Student24",Gender:"Male",Class:"3rd",Section:"C"},
{Name:"Test Student25",Gender:"Male",Class:"1Std",Section:"A"},
{Name:"Test Student26",Gender:"Male",Class:"2nd",Section:"B"}];
});
</script>
<body ng-controller="myappcont">
<div id="stList" style="height: 630px;">
<h2>Student List</h2>
<hr/>
<table border="1" style="width:500px">
<thead style="display: block;">
<tr>
<th width="150px">Name</th>
<th width="100px">Gender</th>
<th width="100px">Class</th>
<th width="100px">Section</th>
</tr>
</thead>
<tbody style="height: 480px; display: block; overflow-y: scroll;">
<tr ng-repeat="student in students" ng-dblclick="gotdetails(student)">
<td width="150px">{{student.Name}}</td>
<td width="100px">{{student.Gender}}</td>
<td width="100px">{{student.Class}}</td>
<td width="100px">{{student.Section}}</td>
</tr>
</tbody>
</table>
</div>
<div id="stdetails" style="height: 650px;">
<hr/>
<h2>Student Details</h2>
<a href="" ng-click="gotolist()" >Go To List</a>
<hr/>
<table>
<thead>
<tr>
<th>Property Name</th>
<th>Property Value</th>
</tr>
</thead>
<tbody>
<tr>
<td>Name</td>
<td width="150px">{{student.Name}}</td>
</tr>
<tr>
<td>Gender</td>
<td width="100px">{{student.Gender}}</td>
</tr>
<tr>
<td>Class</td>
<td width="100px">{{student.Class}}</td>
</tr>
<tr>
<td>Section</td>
<td width="100px">{{student.Section}}</td>
</tr>
</tbody>
</table>
</div>
</BODY>
</HTML>
Summary
Hope this article may helpful to you, happy coding enjo.....y.
Thanks