我正在使用html5模式下的angularjs。它似乎控制了页面上的所有href。但是,如果我想要在应用程序的同一域中有一个链接,但实际上不是在应用程序中,那该怎么办?pdf就是一个例子。
如果我这样做了,<a href="/pdfurl">
angular将尝试使用html5mode并使用路由提供者来确定应该加载哪个视图。但实际上我希望浏览器以正常的方式转到该页面。
要做到这一点,唯一的方法是与路由提供者建立一个规则,并使用window.location将其重定向到正确的页面?
发布于 2016-05-25 15:48:24
从Angular v1.3.0开始,位置提供程序有了一个新的rewriteLinks
配置选项。这将“劫持”页面上的所有链接:
module.config(function ($locationProvider) {
$locationProvider.html5Mode({
enabled: true,
rewriteLinks: false
});
});
虽然对所有链接禁用此行为可能不是您的本意,但我将这篇文章发布给像我一样想在html5模式下使用$location
的其他人,只是为了在不影响所有链接的情况下更改URL。
发布于 2013-05-30 21:40:44
如果你不想让Angular控制href。在链接上放置一个目标属性。
所以PDF会绕过html5mode和routeProvider,浏览器会直接转到那个url。
发布于 2015-10-20 18:00:37
其他解决方案。所有链接将正常工作(重新加载页面)。将在pushState上播放由ng-href="/path"
标记的链接。Small JS hack对此有帮助。
.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);
}])
https://stackoverflow.com/questions/16837704
复制相似问题