Search code examples
angularjspartial-viewsangular-routingangularjs-routing

AngularJS: Partial view not rendering


I am trying to load partial views in a single page application using angular. I have configured the routes as shown in my script file code below. Following is my code for loading partial views:

var app = angular.module("myBlogApp", ["ngRoute"])
   .config(function ($routeProvider) {
       $routeProvider
       .when("/view1", {
           templateUrl: "Views/view1.html",
           controller: "view1Controller"
       })
      .when("/view2", {
          templateUrl: "Views/view2.html",
          controller: "view2Controller"
      })
       .when("/view3", {
           templateUrl: "Views/view3.html",
           controller: "view3Controller"
       })
   })
    .controller("view1Controller", function ($scope) {
        $scope.message = "You are in View 1";
    })
    .controller("view2Controller", function ($scope) {
        $scope.message = "You are in View 2";
    })
    .controller("view3Controller", function ($scope) {
        $scope.message = "You are in View 3";
    })

Following is the Index page:

<html ng-app="myBlogApp">
<head>
    <title></title>
    <meta charset="utf-8" />
    <script src="Scripts/angular.min.js"></script>
    <script src="Scripts/angular-route.min.js"></script>
    <script src="Scripts/Script.js"></script>
</head>
<body>
    <table>
        <tr>
            <td>
                <a href="#/view1">View1</a>
                <a href="#/view2">View2</a>
                <a href="#/view3">View3</a>
            </td>
            <td>
                <div ng-view></div>
            </td>
        </tr>
    </table>
</body>
</html>

But when I load the index.html page and click on the hyperlinks, I do not see the view on my page.

The HTML on view is:

<h1>View2</h1>
<div>{{message}}</div>

Solution

  • In AngularJS version 1.6 they changed the hash-prefix for URL hash-bang. Links now have #! instead of #. More about it: commit-aa077e8


    To remove the hash-prefix (!), you would need your config to have this code:

    $locationProvider.hashPrefix('');