Reputation: 43
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>
Upvotes: 3
Views: 1031
Reputation: 255
<!DOCTYPE html>
<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular-route.js"></script>
<body ng-app="myApp">
<a href="#!view1">View 1</a>
<a href="#!view2">View 2</a>
<a href="#!view3">View 3</a>
<div ng-view></div>
<script>
var app = angular.module("myApp", ["ngRoute"]);
app.config(function($routeProvider) {
$routeProvider
.when("/view1", {
template : "{{message}}",
controller : "view1Controller"
})
.when("/view2", {
template : "{{message}}",
controller : "view2Controller"
})
.when("/view3", {
template : "{{message}}",
controller : "view3Controller"
});
});
app.controller("view1Controller", function ($scope) {
$scope.message = "You are in View 1";
});
app.controller("view2Controller", function ($scope) {
$scope.message = "You are in View 2";
});
app.controller("view3Controller", function ($scope) {
$scope.message = "You are in View 3";
});
</script>
</body>
</html>
Upvotes: 1
Reputation: 4191
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('');
Upvotes: 1