Reputation: 1
So I was watching an angular tuto and the guy was explaining the 'ngRoute' and how to use it, using this example :
var myApp = angular.module('myApp', ['ngRoute']);
myApp.config(function ($routeProvider) {
$routeProvider
.when('/', {
templateUrl: 'pages/home.html',
controller: 'mainController'
})
.when('/second', {
templateUrl: 'pages/second.html',
controller: 'secondController'
})
});
myApp.controller('mainController', ['$scope', '$route', function ($scope, $route) {
}])
.controller('secondController', ['$scope', '$route', function ($scope, $route) {
}]);
<!DOCTYPE html>
<html lang="en" ng-app="myApp">
<head>
<meta charset="UTF-8">
<title>Document</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" type="text/css">
</head>
<body>
<!-- Fixed navbar -->
<nav class="navbar navbar-default navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<a class="navbar-brand" href="#">Angular</a>
</div>
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav navbar-right">
<li><a href="#">Home</a></li>
<li><a href="#/second">Second</a></li>
</ul>
</div>
</div>
</nav>
<div class="container">
<div ng-view class="jumbotron"></div>
</div> <!-- /container -->
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.3/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.3/angular-route.js"></script>
<script src="app.js"></script>
</body>
</html>
and it worked for him, but for me just the Home link worked while the Second link didn't work until I changed the <a href="#/second">Second</a>
to <a href="#!/second">Second</a>
and it worked, but I don't understand why ?
Upvotes: 0
Views: 550
Reputation: 1
var myApp = angular.module('myApp', ['ngRoute']);
myApp.config(function ($routeProvider) {
$routeProvider
.when('/', {
templateUrl: 'pages/home.html',
controller: 'mainController'
})
.when('/second', {
templateUrl: 'pages/second.html',
controller: 'secondController'
})
});
myApp.controller('mainController', ['$scope', '$route', function ($scope, $route) {
}])
.controller('secondController', ['$scope', '$route', function ($scope, $route) {
}]);
<!DOCTYPE html>
<html lang="en" ng-app="myApp">
<head>
<meta charset="UTF-8">
<title>Document</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" type="text/css">
</head>
<body>
<!-- Fixed navbar -->
<nav class="navbar navbar-default navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<a class="navbar-brand" href="#">Angular</a>
</div>
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav navbar-right">
<li><a href="#">Home</a></li>
<li><a href="#/second">Second</a></li>
</ul>
</div>
</div>
</nav>
<div class="container">
<div ng-view class="jumbotron"></div>
</div> <!-- /container -->
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.3/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.3/angular-route.js"></script>
<script src="app.js"></script>
</body>
</html>
Upvotes: 0
Reputation: 2281
you probably use version 1.6 right? . In this 1.6 angular team decided to changing the default $location hash-prefix to '!' . You can read in
https://docs.angularjs.org/guide/migration#migrating-from-1-5-to-1-6
Upvotes: 2
Reputation: 1104
can you make sure that you don't have the below code from your route file inside config...
$locationProvider.hashPrefix('!');
Upvotes: 1