Angularjs enlaces normales con html5Mode

Estoy trabajando con angularjs en modo html 5. Lo cual parece tomar el control de todos los href en la página. Pero, ¿qué sucede si quiero tener un enlace a algo dentro del mismo dominio de la aplicación, pero no en realidad en la aplicación? Un ejemplo sería un pdf.

Si lo hago, angular solo intentará usar el modo html5 y usará el proveedor de ruta para determinar qué vista debe cargarse. Pero en realidad quiero que el navegador vaya a esa página de la manera normal.

¿Es la única manera de hacerlo hacer una regla con el proveedor de ruta y hacer que se redirija a la página correcta con window.location?

en el modo HTML5, hay tres situaciones en las que la etiqueta A no se reescribe: de los documentos angulares

  • Enlaces que contienen un atributo de target . Ejemplo: link
  • Enlaces absolutos que apuntan a un dominio diferente Example: link
  • Enlaces que comienzan con ‘/’ que conducen a una ruta base diferente cuando se define base Example: link

entonces su caso sería 1. add target="_self"

A partir de Angular v1.3.0 hay una nueva opción de configuración rewriteLinks para el proveedor de ubicación. Esto cambia el “secuestro” de todos los enlaces de la página:

 module.config(function ($locationProvider) { $locationProvider.html5Mode({ enabled: true, rewriteLinks: false }); }); 

Aunque desactivar este comportamiento para todos los enlaces puede no ser tu intención, estoy publicando esto para otros que, como yo, quieran usar $location en modo html5 solo para cambiar la URL sin afectar todos los enlaces.

Si no quieres que Angular tome el control del href. Coloque un atributo de destino en el enlace.

Así que PDF pasará el modo html5 y el routeProvider y el navegador simplemente irá a esa url.

Otra solución Todos los enlaces funcionarán normalmente (página de recarga). Los enlaces marcados por ng-href="/path" se reproducirán en pushState. Small JS hackear ayuda con eso.

 .config(["$locationProvider", function($locationProvider) { // hack for html5Mode customization $('a').each(function(){ $a = $(this); if ($a.is('[target]') || $a.is('[ng-href]')){ } else { $a.attr('target', '_self'); } }); $locationProvider.html5Mode(true); }])