Нормальные ссылки Angularjs с html5Mode
Я работаю с угловыми в режиме html 5. Кажется, что он контролирует все href на странице. Но что, если я хочу иметь ссылку на что-то в том же домене приложения, но не на самом деле в приложении. Примером может служить pdf.
Если я сделаю угловой, попробую использовать html5mode и использовать поставщика маршрута, чтобы определить, какой вид должен быть загружен. Но я действительно хочу, чтобы браузер пошел на эту страницу обычным способом.
Единственный способ сделать это – сделать правило с поставщиком маршрутов и перенаправить его на правильную страницу с помощью window.location?
- Угловой sanitize / ng-bind-html не работает?
- Как установить фокус на поле ввода?
- Способ ng-повторить определенное количество раз вместо повторения по массиву?
- Как использовать ng-class в select с ng-options
- Confused об Angularjs, заключаемых и изолирующих областях и привязках
- Валидация не срабатывает, когда данные привязывают атрибуты min / max номера ввода
- Не удается извлечь инжектор из углового
- Как / когда использовать ng-click для вызова маршрута?
- AngularJS. Преобразование значения тега (время Unix для чтения человеком)
- Что именно вы делаете с функцией transclude и функцией clone linking?
- Как я могу анимировать сортировку списка с помощью orderBy с помощью ng-repeat с ng-animate?
- Перенаправление на определенный маршрут на основе условия
- Пользовательская форма проверки валидации для сравнения двух полей
в режиме 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); }])