39

I have set up my routing in Angular and all works fine:

$locationProvider.html5Mode(true);
$routeProvider.
      when('/', { templateUrl: '/Home/Index' }).
      when('/User', { templateUrl: '/User/Index' });

However I now have an anchor tag to work as a logout button which will just redirect the user to /User/Logout, and logout will then log the user out and redirect them to the login page. So what I want is for angular js to just ignore this specific route and allow it to do a normal http redirect. This seems like something that should be really easy but I haven't been able to find a solution to the problem.

I know I could do a click event and do a window.location change in the click event but that seems like a really hacky way to do it.

David Esteves
  • 1,614
  • 2
  • 15
  • 22

2 Answers2

106

specify target="_self" in your anchors, so that angularjs does not rewrite URLs. See the discussion here: http://docs.angularjs.org/guide/$location

akonsu
  • 28,824
  • 33
  • 119
  • 194
  • This is necessary for me in the Dropdown of Bootstrap! – dude Jul 08 '15 at 09:33
  • This helped me get the Register and Login links working in the MVC 6 template, where the rest of my app is Angular. – Christopher Oct 10 '15 at 05:58
  • Extremely useful when dealing with login/logout sequences using mix of express and angular routes. – eYe Sep 15 '16 at 05:01
  • so simple! Never knew this was possible! Can confirm this is working using a Python Flask web application, in which the "application" page has all the Angular code where it's routing takes over the python app. Very useful – OzzyTheGiant Jan 10 '17 at 20:43
0

You could use a function with redirectTo also:

 .when('/User/Logout', {
            redirectTo: function(obj,path,search) {
                window.location.href=path;
            }
        })
Nekudotayim
  • 173
  • 5