Angularjs Normal链接与html5Mode

mfr*_*107 76 angularjs

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

如果我做<a href="/pdfurl">角度将只尝试使用html5mode并使用路由提供程序来确定应加载哪个视图.但我实际上希望浏览器以正常方式转到该页面.

唯一的方法是使用路由提供程序制定规则并使用window.location将其重定向到正确的页面吗?

Edu*_*nal 146

在HTML5模式下,有三种情况不会重写A标记:来自angular docs

  • 包含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"

  • 它就像一个魅力!非常感谢 (3认同)

Mou*_*gip 34

从Angular v1.3.0开始rewriteLinks,位置提供程序有一个新的配置选项.这会切换"劫持"页面上的所有链接:

module.config(function ($locationProvider) {
    $locationProvider.html5Mode({
        enabled: true,
        rewriteLinks: false
    });
});
Run Code Online (Sandbox Code Playgroud)

虽然取消所有链接的这种行为可能不是你的意图,但是我发布这个给像我一样想$location在html5模式下使用而不影响所有链接的人.


mfr*_*107 6

如果您不希望Angular控制href.在链接上放置目标属性.

所以PDF将通过html5mode和routeProvider,浏览器将转到该URL.