angular.js链接行为 - 禁用特定URL的深层链接

Vla*_*d V 53 angularjs

我有一个工作的Angular.js应用程序,启用了HTML5模式.

$location.Html5mode(true).hashbang("!");
Run Code Online (Sandbox Code Playgroud)

我想要实现的是获取一些URL或<a>标签来执行正常的浏览行为,而不是使用HTML5历史记录API更改地址栏中的URL并使用Angular控制器处理它.

我有这个链接:

<a href='/auth/facebook'>Sign in with Facebook</a>
<a href='/auth/twitter'>Sign in with Twitter</a>
<a href='/auth/...'>Sign in with ...</a>
Run Code Online (Sandbox Code Playgroud)

我希望浏览器将用户重定向到,/auth/...以便用户重定向到身份验证服务.

有什么方法可以做到这一点吗?

Nik*_*Nik 119

target="_self"在Angular 1.0.1中添加作品:

<a target="_self" href='/auth/facebook'>Sign in with Facebook</a>
Run Code Online (Sandbox Code Playgroud)

记录此功能(https://docs.angularjs.org/guide/$location - 搜索'_self')

如果你很好奇,请查看角度源(第5365行@ v1.0.1).如果!elm.attr('target')为真,则仅发生点击劫持.


小智 18

Fran6co方法的替代方法是禁用$ locationProvider中的'rewriteLinks'选项:

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

这将完成与调用$ rootElement.off('click')完全相同的事情,但不会干扰处理应用根元素上的点击事件的其他javascript.

查看文档相关来源


小智 16

这是一起关闭深层链接的代码.它从rootElement禁用click事件处理程序.

angular.module('myApp', [])
   .run(['$location', '$rootElement', function ($location, $rootElement) {
      $rootElement.off('click');
}]);
Run Code Online (Sandbox Code Playgroud)