Learning {{AngularJS}} with Examples–Part 1


Client side programming is becoming the one of the main parts of web applications. Now a days, We are seeing the explosion of JavaScript libraries. And the reason is that some JavaScript libraries got very popular and developers took them hand to hand because of its cool features with almost negligible performance cost, Now in our projects,  count of JavaScript files (plugins and custom files) are increasing rapidly which is making it  unmanageable and unmaintainable. AngularJS provides best of the both the worlds and now a days, it is one of the most talked and used JavaScript framework in web applications. So I have thought to start a series of post on AngularJS. I’ll start from basics and gradually discuss all the features, keeping in mind the.NET Developers.  So let us start learning it. The first questions arises that

What is AngulalJS?

AngularJS is not just another JavaScript library but it provides a framework to write a proper architectured, maintainable and testable client side code. Some of the key points are

  • It follows MVC framework. If you don’t have Idea MVC framework, I’ll suggest you to get an Idea of MVC framework and then start learning AngularJS. You can refer below wiki page on MVC framework.
  • AngularJS is primarily aimed to develop SPAs (Single Page Applications), it means your single HTML document turns into application. But it is also used a lot in ASP.NET and other applications .
  • Allows you to write Unit and integration tests for JavaScript code. Testability is one of the main points, which was kept in mind while writing this framework so it has great support of it.
  • It provides it’s own and very rich list of attribute and properties for HTML controls which increases the usability of it exponentially.It is also called directives.
  • Supports two-way binding that means your data model and control’s data will be in sync.
  • Angular supports Dependency injection. Read more about dependency injection on wiki.
  • Angular library is also available on CDN so you just need to the url of the CDN and it available for use.

AngularJS is Open Source

AngularJS is a open source library and developed and supported by Google. Being an open source, you can go through the code itself and customize it if required. There is lot of support from JavaScript community and even you can contribute to it.  Currently, more that 100 contributors have contributed and it is increasing day by day.

So let’s discuss the main components of AngularJS. These are

Controller – It is main component of AngularJS and contains the state and logic both. It acts as bridge between services and views.

Views/Directives –  Here we generate the UI. Directives extends the HTML element and enables us to generate the complex html easily. Controllers talks to view to both directions.

Services – It contains the core logic and state of the application. In it, we can communicate to server to get and post the data.

Now let’s see all the above components glued with each other.

angularjs components flow

Now you have got the basic explanation about the basics of AngularJS. So let’s jump to the coding. We need to learn two things mentioned below before writing the first application

1- {{expression}} – It is called expressions and JavaScript like code can be written inside. It should be used for mainly small operations in HTML page.

2- $scope – This is one of very important variable used in AngularJS. It provides and link between the data and views. It holds all the required data for the views and used with in the HTML template.

3- ng- – All the elements that are provided by angular starts from ng-. So if you see some attribute that ng- and angular library is also included in the page, then you can assume that this should be angular element only.

4- ng-app – This directive is used to bootstrap the application. Normally, it is put at in top level element like html or body tag. (That will be discussed in details in coming post).

Now lets write our first Hello World application with AngularJS. In this example, I’ll be using the basic construct of AngularJS. I have created Empty Project in Visual Studio and added an HTML page Home.html and written it as

imageThis is very simple page using AngularJS. I have encircled and numbered the specific part of the page that are relevant with AngularJS. Let’s discuss it one by one.

  1.  I have included AngularJS library on the page using Google cdn.
  2. Here we have created a module myApp that is assigned to ng-app attribute which works as container for an Angular application. We will discuss module in detail in coming posts.
  3. Whenever we want to use the AngularJS, we need a controller. We defined our controller named HelloWorldCtrl here. Controller contains all the logic of an angular application. I appended Ctrl in the name just as a naming convention. Controller is later used in HTML element. Controller can be created in different file which we will see in coming posts.
  4. We already discussed about $scope. This is a parameter in controller method and we can create dynamic properties and assign values to it, which can be later can be accessed in UI element. Here helloWorldMessage is used which is a dynamic property, created in controller.
  5. Here we created a new property helloWorldMessage to $scope variable and assigns the message.
  6. As discussed earlier that this attribute is required to bootstrap the AngularJS application so I have put it in body element. Putting it at body element allows us to use AngularJS inside this tag. In the above application, I could have put it at h1 element as well because I am using AngularJS inside this tag only. The scope can be displayed pictorially as

ng-app scope

  1. We already discussed what is $scope. This is a parameter in controller method and we can create dynamic  properties and assign values to it, which can be later can be accessed in UI element. We can also create the controller in a new JavaScript file that we’ll see in the coming posts.

ng-controller scope

  1. Now we see the expression here. As we provided the controller in this element and we can access the property helloWorldMessage that we defined in the controller.

Now it’s to run the application.

HelloWorld Live

We can see the message with date and time that we have provided.  Our page got rendered as per expectation. Now Let’s discuss the flow of the angular page. It can be depicted pictorially as

 

AngularJS application Flow

 

So the above picture clearly illustrates that How does the flow of Angular page work at high level.

So In this post  we created a very simple page which has all the code on the same HTML page. In the next post, we’ll learn more concept and write a more detailed page and provide a better structure to the application.

Sample is attached with the application.

Hope you have enjoyed the post. To go next post post in the series, use link Next Post ==> at the right side at the end of the post.

Cheers,
Brij

[9th Aug 2015 : Updated this post for Angular version 1.4.*]

21 thoughts on “Learning {{AngularJS}} with Examples–Part 1

  1. Pingback: Learning {{AngularJS}} with Examples–Part 2 | Code Wala

  2. Pingback: Learning {{AngularJS}} with ASP.NET MVC – Part 3 | Code Wala

  3. Pingback: Learning {{AngularJS}} with ASP.NET MVC – Part 4 | Code Wala

  4. Pingback: [Dev Tip] Learning {{AngularJS}} with Examples–Part 2 | sudo man

  5. Pingback: Learning {{AngularJS}} with ASP.NET MVC – Part 5 | Code Wala

  6. Pingback: Learning {{AngularJS}} with ASP.NET MVC – Part 6 | Code Wala

  7. Pingback: DataBinding in {{AngularJS}} – Part 7 | Code Wala

  8. Pingback: Data Binding in AngularJS – Under the hood | Code Wala

  9. Pingback: Creating custom directive in AngularJS – Part 9 | Code Wala

  10. Hello Brij,

    It is really very helpful post for beginners to learn AngularJS. It really helped me a lot.

    Only I would like to suggest one thing as AngularJS has latest version 1.4.3 (as now), they have changed syntaxes for defining controller.
    So what happens here, developers refers your post and uses latest version of AJ and because of that they are not able to use controller in correct way. (Suggest me If I am wrong here. :))

    So I would suggest if you could change it to latest version.

    • Thanks a lot for your suggestion. You are absolutely right. I made a plan to update all the posts in coming weeks but as you mentioned, I started updating it. I have already worked on this post and updated. Rest will follow. Do let me know if you have any other suggestion. Thanks again

Leave a comment