Нормальные ссылки Angularjs с html5Mode

Я работаю с угловыми в режиме html 5. Кажется, что он контролирует все href на странице. Но что, если я хочу иметь ссылку на что-то в том же домене приложения, но не на самом деле в приложении. Примером может служить pdf.

Если я сделаю угловой, попробую использовать html5mode и использовать поставщика маршрута, чтобы определить, какой вид должен быть загружен. Но я действительно хочу, чтобы браузер пошел на эту страницу обычным способом.

Единственный способ сделать это – сделать правило с поставщиком маршрутов и перенаправить его на правильную страницу с помощью window.location?

в режиме HTML5 существует три ситуации, когда тег A не переписан: из угловых документов

  • Ссылки, содержащие атрибут target . Пример: link
  • Абсолютные ссылки, указывающие на другой домен Example: link
  • Ссылки, начинающиеся с ‘/’, которые приводят к другому базовому пути, когда base определена. Example: link

поэтому ваш случай будет 1. добавить target="_self"

Начиная с версии Angular v1.3.0 существует новый rewriteLinks конфигурации rewriteLinks для поставщика местоположения. Это переключает «захват» всех ссылок на странице:

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

Хотя disablig это поведение для всех ссылок может не быть вашим намерением, я отправляю это для других, которые, как и я, хотят использовать $location в режиме html5 только для изменения URL-адреса без влияния на все ссылки.

Если вы не хотите, чтобы Angular взял под контроль href. Поместите целевой атрибут в ссылку.

Таким образом, PDF передаст html5mode и routeProvider, и браузер просто перейдет к этому URL-адресу.

Другое решение. Все ссылки будут работать нормально (перезагрузить страницу). Ссылки, отмеченные ng-href="/path" будут воспроизводиться на pushState. Небольшой взлом JS поможет с этим.

 .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); }]) 
  • Маршрутизация и токен аутентификации AngularJS с webapi
  • В чем разница между $ routeProvider и $ stateProvider?
  • Оптимальные методы AngularJS для объявления модhive?
  • Как фильтровать (ключ, значение) с помощью ng-repeat в AngularJs?
  • $ sce.trustAsResourceUrl () глобально
  • Угловой разрыв JS ForEach
  • Как отформатировать дату с помощью ng-модели?
  • angular.element vs document.getElementById или селектор jQuery со спин (занятым) управлением
  • Установите фокус на первый недопустимый ввод в форме AngularJs
  • петля foreach в angularjs
  • как использовать параметр ng для установки значения по умолчанию для элемента select
  • Давайте будем гением компьютера.