AngularJS, a JavaScript framework developed by a Googler and supported by Google has become quite a buzz word in past few months. More and more developers are using it and thus the community has grown significantly. Not only they love it, but they can’t stop praising it :) The reason is very simple. AngularJS rocks \m/ !! :D If you come from a jQuery background and try to learn Angular, you would be amazed by this framework. How much you can do with few lines of code in Angular is mind-boggling. We remember jQuery did the same when it was first released back in 2006. Developers used to write hundreds if not thousands of lines of code in pure JavaScript just to make the damn works with different browsers. jQuery changed that paradigm with selectors, custom events, animations etc. But as web grew, so did the web technologies. Browsers are faster and faster day by day. It just dint make any sense to render a full HTML page on server-side as browser can do the same. With Ajax picking up the pace it makes more sense to render UI of webapp dynamically. A new wave of Single Page Applications (SPA) started which lead to development of many front-end frameworks like Backbone, Knockout, Ember, Angular. Coming back to AngularJS, I wanted to start a series of articles which describe Angular in plain vanilla fashion. Any one with basic JavaScript, HTML background can start working in AngularJS without any hassle. Let us dive into the world of AngularJS and see what it is.
AngularJS as it says is a Superheroic JavaScript MVW framework. It assists with running single-page applications. Its goal is to augment browser-based applications with model–view–controller (MVC) capability, in an effort to make both development and testing easier. AngularJS takes declarative programming to whole new level. It adapts and extends traditional HTML to better serve dynamic content through two-way data-binding that allows for the automatic synchronization of models and views.
There are many software architecture pattern which separates the representation of information from the user’s interaction with it. The central ideas behind these patterns are code reusability and separation of concerns. The most famous pattern that is used widely today is MVC or Model-View-Controller. Similar to MVC, there is another pattern called MVP or Model-View-Presenter. The MVP is based on MVC and the presenter assumes the functionality of the “middle-man” (played by the controller in MVC). In MVP, all presentation logic is pushed to the presenter. Eventually, the model becomes strictly a domain model. And then there are other patterns such as MVVM or Model-View-View-Model. Angular doesn’t care actually what software architecture pattern you want to use in your app. And thus the pattern MVW or Model-View-Whatever. A basic concept of MVW is that all definitions are associated with a named Module. Modules can then be aggregated to form complete web applications. Modules can depend on one another, so that including a single Module in your WebApplication may bring along additional functionality on which that Module depends. Angular JS provides you with rich set of APIs to define these modules and linked them together with dependency injection. We will see this in great detail in next few articles.
Before we get into any theory, let us get our hands dirty with some actual Angular code. That way would learn a great deal of whats happening. In order to write a hello world application in Angular, all we have to do is it include Angular JS JavaScript in our HTML document.
<script type="text/javascript"
src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
Code language: HTML, XML (xml)
And that’s pretty much it. Now define your HTML page like below.
<!DOCTYPE html>
<html ng-app>
<head>
<title>Hello World, AngularJS - ViralPatel.net</title>
<script type="text/javascript"
src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
</head>
<body>
Write some text in textbox:
<input type="text" ng-model="sometext" />
<h1>Hello {{ sometext }}</h1>
</body>
</html>
Code language: HTML, XML (xml)
Online Demo
If you want to change and play around with code use this JSFiddle: http://jsfiddle.net/viralpatel/vFcZ7/ Just write some text in above demo and see how the value after “Hello” changes. Note that we didn’t write a single line of JavaScript and still this example works like a charm! Let us go through the demo step by step. There are some Angular related tags we put in our HTML document.
First thing that we notice is an attribute ng-app
within <html>
tag. This attribute tells the Angular to be active in this portion of the page. So in our case entire document. If you want to enable Angular only at specific location in your webpage then you can define ng-app
attribute to any DIV or other tag. In case you are building app that also works with IE7, add id=”ngapp”. For example:
<html ng-app id="ng-app">
Code language: HTML, XML (xml)
If you choose to use the old style directive syntax ng: then include xml-namespace in html to make IE happy.
<html xmlns:ng="http://angularjs.org">
Code language: HTML, XML (xml)
We define attribute ng-model
in textbox as ng-model=”sometext”
. ng-model binds the state of textbox with model value. In our case we define a model sometext. This model value is bound with the value of textbox using ng-model attribute. Thus when the textbox value changes, Angular automatically changes the model sometext with this value. This is called Two way data binding. Similarly, if we change the model value than Angular will change the value of textbox. Two way data binding is the core of Angular’s magical spell. It just works. You’ll get to know about it more once we start adding complexity in our application. AngularJS two-way data binding is its most notable feature and reduces the amount of code written by relieving the server backend from templating responsibilities.
Note how we wrap our model value in double curly braces. This tell Angular to bind the value of model sometext in place of {{ sometext }}
. Thus any change in sometext model value changes the text inside <h1> tag.
Now lets further modify our demo and add one more Angular attribute ng-show
. In below code, we added attribute ng-show=”sometext”
to <h1> tag.
<script type="text/javascript"
src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
Code language: HTML, XML (xml)
And that’s pretty much it. Now define your HTML page like below.
<!DOCTYPE html>
<html ng-app>
<head>
<title>Hello World, AngularJS - ViralPatel.net</title>
<script type="text/javascript"
src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
</head>
<body>
Write some text in textbox:
<input type="text" ng-model="sometext" />
<h1 ng-show="sometext">Hello {{ sometext }}</h1>
</body>
</html>
Code language: HTML, XML (xml)
Online Demo
If you want to change and play around with code use this JSFiddle: http://jsfiddle.net/viralpatel/ppgsS/ In this demo, the text Hello does not appear unless we type anything in textbox. We added just one small attribute to <H1> tag and see how the functionality changed!. ng-show
attribute conditionally show an element, depending on the value of a boolean expression. Similar to ng-show you can also use ng-hide
, which exactly does opposite of ng-show. Note that until now we have not written any JavaScript code at all. Still our application became so dynamic.
AngularJS provides powerful mechanism to modify the data on the go using Filters. Filters typically transform the data to a new data type, formatting the data in the process. The general syntax for using filter is:
Code language: JavaScript (javascript){{ expression | filter }}
You can use more than filter on an expression by chaining them like:
Code language: JavaScript (javascript){{ expression | filter1 | filter2 }}
AngularJS by default provide few filters that we can use in our app. It is also possible to define your own custom filters. For now we will just check filters that Angular provide with framework.
uppercase
and lowercase
As its name suggest, this filter convert the expression into uppercase letters. Lets check a quick demo. Lets modify few lines from our above example and use uppercase
filter.
<!DOCTYPE html>
<html ng-app>
<head>
<title>Hello World, AngularJS - ViralPatel.net</title>
<script type="text/javascript"
src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
</head>
<body>
Write some text in textbox:
<input type="text" ng-model="sometext" />
<h1>Hello {{ sometext }}</h1>
<h4>Uppercase: {{ sometext | uppercase }}</h4>
<h4>Lowercase: {{ sometext | lowercase }}</h4>
</body>
</html>
Code language: HTML, XML (xml)
Online Demo
If you want to change and play around with code use this JSFiddle: http://jsfiddle.net/viralpatel/nZ5sH/ Notice when you type in the textbox, the value is converted to upper and lower case depending on the filter we used. Similarly, Angular provides some more filters like:
date
Usage:
Code language: JavaScript (javascript){{ date_expression | date[:format] }}
Formats date to a string based on the requested format. Read Angular documentation to know more about format.
number
Usage:
Code language: JavaScript (javascript){{ number_expression | number[:fractionSize] }}
Formats a number as text. If the input is not a number an empty string is returned. There are more filters like json, limitTo, filter, orderBy. We will go through them in next few articles as and when we use them. For now you can refer to Filter documentation for more details.
We have just scratched the surface of a big ocean. AngularJS offers so much more that we can only touch different aspects once we actually start using it. In this tutorial we went through an introduction of AngularJS and also learned how to set it up in any webapplication. Also we saw different angular attributes like ng-app, ng-model, ng-show etc and their usage. Then we checked filters in angular. We saw few basic filters like uppercase, lowercase. Stay tuned for next tutorial where we will see everything about AngularJS Controllers and $scope.
Update: Next tutorial is published.
Read: AngularJS Controller Tutorial.
I hope you like the series of tutorials on AngularJS.
Java URL Encoder/Decoder Example - In this tutorial we will see how to URL encode/decode…
Show Multiple Examples in OpenAPI - OpenAPI (aka Swagger) Specifications has become a defecto standard…
Local WordPress using Docker - Running a local WordPress development environment is crucial for testing…
1. JWT Token Overview JSON Web Token (JWT) is an open standard defines a compact…
GraphQL Subscription provides a great way of building real-time API. In this tutorial we will…
1. Overview Spring Boot Webflux DynamoDB Integration tests - In this tutorial we will see…
View Comments
Awesome post buddy....very helpful to me
Hi friend.excellent example using AngularJS. thanks for information.
Now i am learning AngularJS from this site.
Pradeep
Wow! That is really interesting. I've been playing with routes and views, but this is the first time I've seen a simple demonstration of using model.
Looking forward to your controller tutorial.
Superb post. I've become a fan of Angularjs. waiting for your next tutorial.
Glad you liked it :)
Very good and effective explanation.
nice
good
This is reallly nice tutorial buddy , helped me a lot . I like your way of explaination from basics.
KEEP IT UP ......:)
superb,it help me a lot
awesome post and nice examples i love it...!!!!
Great !! Superb !! Awesome !!
Thanks for this helpful, easy and quick learning article.
superb.......... nicely explained
Easy and effective article. You are absolutely right....can't stop praising Angular JS but thanks for detailed yet simple explanation. Keep it up...
Very helpfully and simple and nicely covers the basics. Time to read the next one.