Change The Page Title Dynamically Using AngularJS

We will be showing random titles that we have already set in an array to the user whenever the user reloads the same page. To implement this, we are creating an Angular JS controller and service. And we are treating the HTML tag of our page as our Angular JS app module and controller. Now shall we go and see this in detail? I hope you will like this.

Background

For the past few days, I have been doing some experiments with Angular JS. If you want to see my latest articles related to Angular JS, please see here: Angular JS Latest Articles. Here in this post, we are going to change the page title dynamically in each user action. I hope you all know how important a title tag is on a page. Let us see that first.

Importance Of Title Tag

  • A title tag adds a title in the browser toolbar.
  • It also provides a title for the pages when the page is added to favorites.
  • Positively affects your page ranking in Google search, by displaying the title for the page in search results.

Now we will start our coding. I hope you will enjoy reading.

Create an Empty Website in Visual Studio

Click File-> New-> Web Site.

Website

Empty Website In Visual Studio

Install Angular JS from NuGet Packages

Once your application is opened, please install Angular JS first, since we are going to do all of our coding part using Angular JS.

Angular

Install Angular JS From NuGet Packages

Now create a new page, and start coding.

Using The Code

Before starting, we need to add the needed references to our page right?

<script src="Scripts/angular.min.js"></script>
<script src="Scripts/angular-aria.min.js"></script>
<script src="Scripts/angular-route.min.js"></script>
<script src="Scripts/myScripts.js"></script>

Here myScripts.js”/em> is our JavaScript file where we are going to write out Angular JS scripts. Once you add the reference we will make some changes to our page as follows.

<em>
    <!DOCTYPE html>
    <html ng-app="titApp" ng-controller="titCtrl as t">
    <head>
        <title>{{t.title}} - Sibeesh Passion</title>
        <meta charset="utf-8" />
        <script src="Scripts/angular.min.js"></script>
        <script src="Scripts/angular-aria.min.js"></script>
        <script src="Scripts/angular-route.min.js"></script>
        <script src="Scripts/myScripts.js"></script>
    </head>
    <body>
        <h1>{{t.title}}</h1>
    </body>
    </html>
</em>

As you can see titApp is our Angular JS app name and titCtrl is our controller name, now we will start writing the scripts. Are you ready?

Add Angular JS App

You can add an Angular JS app as follows.

<em>
    (function() {
        var app;
        app = angular.module('titApp', []);
    })();
</em>

Now we will create our controller.

Add Angular JS Controller

Below are our Angular JS controller scripts.

<em>
    app.controller('titCtrl', function ($scope, myFactory) {
        var num = Math.floor(Math.random() * 6) + 1;
        var newTit = ['Change Page Layout Dynamically Using jQuery Layout Plug in',
                      'February 2016 Month Winner In C-Sharp Corner',
                      'Custom Deferred Grid Using MVC Web API And Angular JS',
                      'TagIt Control With Data From Database Using Angular JS In MVC Web API',
                      'jQuery Datatable With Server Side Data',
                      'Programmatically Extract or Unzip Zip,Rar Files And Check'];
        myFactory.setTitle(newTit[num]);
        var tt = myFactory.getTitle();
        if (tt != undefined) {
            this.title = tt;
        } else {
            console.log('Oops! Something went wrong while fetching the data.');
        }
    });
</em>

Here myFactory is our Angular JS service name, and as you can see we have set an array with possible tiles in it already. We generate one random number between 1 to 6 and take the appropriate value from the array by index. You can always load these data from a database instead. Here we use two functions setTitle andgetTitle, to set the title and get the title. Now we will see our Angular JS service scripts.

Add Angular JS Service

<em>
    app.service('myFactory', function () {
        var varTitle = 'Change Title Dynamically Demo';
        this.getTitle = function () {
            return varTitle;
        };
        this.setTitle = function (tit) {
            varTitle = tit;
        };
    });
</em>

Now let us see the complete Angular JS scripts.

Complete Scripts

<em>
    (function () {
        var app;
        app = angular.module('titApp', []);
        app.controller('titCtrl', function ($scope, myFactory) {
            var num = Math.floor(Math.random() * 6) + 1;
            var newTit = ['Change Page Layout Dynamically Using jQuery Layout Plug in',
                          'February 2016 Month Winner In C-Sharp Corner',
                          'Custom Deferred Grid Using MVC Web API And Angular JS',
                          'TagIt Control With Data From Database Using Angular JS In MVC Web API',
                          'jQuery Datatable With Server Side Data',
                          'Programmatically Extract or Unzip Zip,Rar Files And Check'];
            myFactory.setTitle(newTit[num]);
            var tt = myFactory.getTitle();
            if (tt != undefined) {
                this.title = tt;
            } else {
                console.log('Oops! Something went wrong while fetching the data.');
            }
        });
        app.service('myFactory', function () {
            var varTitle = 'Change Title Dynamically Demo';
            this.getTitle = function () {
                return varTitle;
            };
            this.setTitle = function (tit) {
                varTitle = tit;
            };
        });
    })();
</em>

We have done everything needed, now it is time to see the output.

Output

Output

Chnage_Page_Title_Dynamically_Using_Angular_JS_Output

Js output

Chnage_Page_Title_Dynamically_Using_Angular_JS_Output

Happy coding.

Conclusion

Did I miss anything that you may think is needed? Have you ever wanted to do this requirement? Did you find this post useful? I hope you liked this article. Please share with me your valuable suggestions and feedback.

Your turn. What do you think?

A blog isn’t a blog without comments, but do try to stay on topic. If you have a question unrelated to this post, you’re better off posting it on C# Corner, Code Project, Stack Overflow, or Asp.Net Forum instead of commenting here. Tweet or email me a link to your question there and I’ll definitely try to help if I can.

Please see this article in my blog here.