angularjs 1.6.0 (latest now) routes not working
Simply use hashbang #!
in the href:
<a href="#!/add-quote">Add Quote</a>
Due to aa077e8, the default hash-prefix used for $location hash-bang URLs has changed from the empty string (''
) to the bang ('!'
).
If you actually want to have no hash-prefix, then you can restore the previous behavior by adding a configuration block to your application:
appModule.config(['$locationProvider', function($locationProvider) { $locationProvider.hashPrefix('');}]);
For more information, see
- AngularJS GitHub Pull #14202 Changed default hashPrefix to '!'
- AngularJS Guide - Migration - aa0077e8
Sorry to get on my high horse but... How did this get released? This is massive, breaking bug. — @MiloTheGreat
The breaking change as by #14202 should be reverted as the reference specification was already officially deprecated #15715
I'm going to close this issue because we haven't got any feedback. Feel free to reopen this issue if you can provide new feedback.
— https://github.com/angular/angular.js/issues/15715#issuecomment-281785369
Simply include the !
into the href
:
<body> <a href="#!/add-quote">Add Quote</a> <div ng-view ></div></body>
I couldn't get routing to work in 1.6.4 so I decided to use angular 1.5.11 and routing works fine although I needed to define all my routings in when(..) functions with trailing "/"
If sticking to an older version of angular is an option for you then consider it since it may save your nerves...
var app = angular.module("myApp", ["ngRoute"]);app.config(function($routeProvider) {$routeProvider.when("/layoutandviewbox", { templateUrl : "views/layout-and-viewbox.html"}).when("/basicshapes", { templateUrl : "views/basic-shapes.html"}).when("/advancedshapes", { templateUrl : "views/advanced-shapes.html"}).when("/groups", { templateUrl : "views/groups.html"}).when("/transformations", { templateUrl : "views/transformations.html"}).when("/effects", { templateUrl : "views/effects.html"}).when("/", { templateUrl : "views/basic-shapes.html"});});