首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Angularjs与html5Mode的正常链接

Angularjs与html5Mode的正常链接
EN

Stack Overflow用户
提问于 2013-05-30 21:35:23
回答 3查看 21.8K关注 0票数 77

我正在使用html5模式下的angularjs。它似乎控制了页面上的所有href。但是,如果我想要在应用程序的同一域中有一个链接,但实际上不是在应用程序中,那该怎么办?pdf就是一个例子。

如果我这样做了,<a href="/pdfurl"> angular将尝试使用html5mode并使用路由提供者来确定应该加载哪个视图。但实际上我希望浏览器以正常的方式转到该页面。

要做到这一点,唯一的方法是与路由提供者建立一个规则,并使用window.location将其重定向到正确的页面?

EN

回答 3

Stack Overflow用户

发布于 2016-05-25 15:48:24

从Angular v1.3.0开始,位置提供程序有了一个新的rewriteLinks配置选项。这将“劫持”页面上的所有链接:

代码语言:javascript
复制
module.config(function ($locationProvider) {
    $locationProvider.html5Mode({
        enabled: true,
        rewriteLinks: false
    });
});

虽然对所有链接禁用此行为可能不是您的本意,但我将这篇文章发布给像我一样想在html5模式下使用$location的其他人,只是为了在不影响所有链接的情况下更改URL。

票数 36
EN

Stack Overflow用户

发布于 2013-05-30 21:40:44

如果你不想让Angular控制href。在链接上放置一个目标属性。

所以PDF会绕过html5mode和routeProvider,浏览器会直接转到那个url。

票数 7
EN

Stack Overflow用户

发布于 2015-10-20 18:00:37

其他解决方案。所有链接将正常工作(重新加载页面)。将在pushState上播放由ng-href="/path"标记的链接。Small JS hack对此有帮助。

代码语言:javascript
复制
.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);
}])
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16837704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档