html5Mode를 사용한 Angularjs 일반 링크
html 5 모드에서 angularjs로 작업하고 있습니다. 페이지의 모든 href를 제어하는 것으로 보입니다. 그러나 앱의 동일한 도메인 내에 있지만 실제로는 앱에없는 링크를 원하면 어떻게해야합니까? 예를 들어 pdf가 있습니다.
내가 <a href="/pdfurl">
각도를 수행 하면 html5mode를 사용하고 경로 공급자를 사용하여 어떤 뷰를로드해야하는지 결정합니다. 하지만 실제로 브라우저가 정상적인 방식으로 해당 페이지로 이동하기를 원합니다.
이를 수행하는 유일한 방법은 경로 공급자를 사용하여 규칙을 만들고 window.location을 사용하여 올바른 페이지로 리디렉션되도록하는 것입니까?
HTML5 모드에서 A 태그가 다시 작성되지 않는 세 가지 상황이 있습니다. 각도 문서에서
target
속성 을 포함하는 링크 . 예:<a href="/ext/link?a=b" target="_self">link</a>
- 다른 도메인을 가리키는 절대 링크
Example: <a href="http://angularjs.org/">link</a>
base
정의 된 경우 다른 기본 경로로 연결되는 '/'로 시작하는 링크Example: <a href="/not-my-base/link">link</a>
그래서 당신의 경우는 1이 될 것입니다. target="_self"
Angular v1.3.0 rewriteLinks
부터 위치 공급자에 대한 새로운 구성 옵션이 있습니다. 그러면 페이지의 모든 링크가 "도용"됩니다.
module.config(function ($locationProvider) {
$locationProvider.html5Mode({
enabled: true,
rewriteLinks: false
});
});
모든 링크에 대해이 동작을 무시하는 것은 귀하의 의도가 아닐 수 있지만 저와 같이 $location
모든 링크에 영향을주지 않고 URL을 변경 하기 위해 html5 모드에서만 사용하려는 다른 사용자를 위해이 내용을 게시 합니다.
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);
}])
참고 URL : https://stackoverflow.com/questions/16837704/angularjs-normal-links-with-html5mode
'Programing' 카테고리의 다른 글
TortoiseGit 대 Git 확장 (0) | 2020.10.16 |
---|---|
Homebrew를 사용하여 설치된 루비 1.9.3으로 어떻게 전환 할 수 있습니까? (0) | 2020.10.16 |
웹 브라우저 컨트롤에서 최신 버전의 Internet Explorer 사용 (0) | 2020.10.16 |
OS X Yosemite / El Capitan에서 시작시 MySQL을 자동로드하는 방법 (0) | 2020.10.16 |
C에서 .h 파일의 비정상적인 사용 (0) | 2020.10.16 |