Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

AngularJS $routeProvider, fallback to default link navigation

Tags:

angularjs

So not 100% of my site is "powered by AngularJS" some of it is just simple static HTML like a landing page or content oriented stuff, which is simple HTML for obvious reasons.

The only way I can seem to get a link to navigate normally is like this:

  $routeProvider
    .when('/plans', {templateUrl: '<%= asset_path('ng/views/start.html') %>'})
    # Catch all
    .otherwise({ redirectTo: (p,loc) -> window.location = loc })

It feels like the catch all should be simpler like I could do .otherwise(false) and it would just navigate normally. Same goes for `.when('/something'/, false) but I don't see anything in the docs that suggests this is possible.

Does anyone know of a better way to do this?

Edit 1:

One solution I've found is to use target='_self' in the link.

The other is apparently to set the "base url" of the application as outlined in the docs. Then any links outside of that base should navigate normally. However that doesn't seem to work as outlined and the example doesn't match what the documentation is suggesting either.

like image 217
Chris Nicola Avatar asked Oct 21 '22 19:10

Chris Nicola


1 Answers

just creating a link to it external file

if you are using hashbang urls (e.g. #/plans) then you should be all set, if you are using html5 history api ($locationProvider.html5(true)) then you need to namespace your app (set base[href] properly) and put the content outside of that namespace.

relevant code:

https://github.com/angular/angular.js/blob/4df45b20d460239a0f5001fb0dd59f95e2d0e80d/src/ng/location.js#L560

Another solution is to use target="_self" on that a element. Again this should be an issue only when html5 (history pushState) is being used.

like image 138
Igor Minar Avatar answered Oct 25 '22 17:10

Igor Minar