We have many frameworks like JQUERY, Angular JS, Mustache, etc., in JavaScript. Based on the project need, I had an opportunity to work on AngularJS framework. Based on the advantages of Angular JS framework, I have extended its usage to other projects.

Why AngularJS?

  • Single Page Application: We can build a single page application by using RouteProviders or StateProviders. o RouteProviders – We can load all the dependencies (i.e., js, css) in html and can shift to all the other pages through routing o StateProviders – We can load dependency for a state and can shift to all the other pages through state routing.
  • MVC Support: As it supports MVC framework, we can manage manipulations easily in html and JS files.
  • Data Models: It is very easy to show data model by using “ng-repeat” without any coding in JavaScript and we can handle it in html itself. We can show the whole response of JSON from API as expected through ng-repeat.
  • Directives: By using directives, we can create customized tags and use it anywhere in the app. We can include any html page directly by using inbuilt directive “ng-template.” We have created customized directives like:

        o focusDiv – to focus on a particularDiv
           Example:-

appName.directive('focusMe',function() {
	return {
		link: function(scope, element, attrs) {
			var model = $parse(attrs.focusMe);
			scope.$watch(model, function(value) {
				if(value === true) {
					$timeout(function() {
						element[0].focus();

					});
				}
			});
		});
	}
});

                     We can use in html as <inputng-model=’testId’ focus-me=’testId’>

        o customPopover – to show popup data by loading dynamically from API response
        o leftMenu/topMenu – to load left/top menu html into main page
           Example:-

 appName.directive('topmenu', function() {
	return {
		restrict: 'E',
		templateUrl: 'pages/top-menu.html',
		replace: true
	}
});

                      We can use in html as <topmenu></topmenu>

  • Events:We have built-in events and we can create customized events by using directives. Built-in Events including Mousedown, ngMouseenter, ngClick, ngDblClick ,ngChange, ngKeyDown, etc. We have created events for an element in directives as draggable, click, keypress, focus, etc.

        Example:-

appName.directive('eventsdirective', function() {
	return {
		restrict: 'A',
		replace: true,
		link: function(scope, element, attrs) {
			element.draggable({
				cursor: "move",
			})
			element.bind('mouseover', function() {
				//we can do whatever we need in mouseover here
			});
		}
	};
});

                     We can use in html like <div eventsdirective></div> 

  • Filters: We can create our own filters or we can use built-in filters by using pipe character followed by the filter. Built-in Filters include Filter, Currency, Date, Lowercase, Uppercase, JSON, Number, OrderBy, LimitTo, etc. We have created filters to filter data with atleast one field, i.e.,

        o searchFilter – to filter rows in a list, add filtername followed by fields to search.    

           Example:-

(ng - repeat = "listObj in myList =
	(myListBackup | menuFilterCustomSearch: myListBackup: filed1: field2)")

         o menuFilterCustomSearch is my custom directive name where it filters based on field1 and field2 values

  • Services: We can create our own services or we can use built-in services by injecting in any controller. Built-in Services include $parse, $timeout, $interval, $window, $location, $cookies, etc.
  • Data Binding: We are able to bind html elements through js easily by using scope to change any element value or any input field value,like $scope.modelName = value.             

        Example:-
                            <div>{{modelValue}}</div>
                            <div ng-bind=’modelValue’></div>
                         We can bind value to div from controller as $scope.modelValue = ‘test’

  • Less code and more functionality
  • It supports all major browsers and smart phones including Android, IOS based phones/tablets
  • It is an ideal partner with any server technology