首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AngularJS ::html5Mode +正常链接行为

AngularJS ::html5Mode +正常链接行为
EN

Stack Overflow用户
提问于 2014-08-22 01:53:30
回答 1查看 488关注 0票数 1

我是angular的新手,目前在一个网站上面临着一个问题,我们需要html5Mode(true),同时保持正常的链接工作,就像使用html5Mode(false)一样。

我们将ng-app放在html-tag中,所以整个页面都在一个模块的控制之下。在某些页面上,我们需要通过ajax加载新内容,并更改特定控制器中的底层模型。这应该会将URL更改为新的(绝对)URL。通过$locationProvider.html5Mode(true);在模块配置中实现这一点是很简单的。

现在的问题是:当我们激活html5Mode时,正常的链接将不再像预期的那样工作。有没有办法在不将页面分割成多个模块的情况下实现所需的行为,从而使“普通链接”脱离angular的作用域和模块的html5Mode设置?

我的想法是在控制器函数中简单地使用history.pushState(),该函数处理content-reload的点击事件,但这一方面确实抛出了许多异常,另一方面甚至不能正常工作。

非常感谢您的任何想法:-)

致以最好的问候,SubnetOne

EN

回答 1

Stack Overflow用户

发布于 2014-08-22 20:24:42

最后我找到了解决方案:

代码语言:javascript
复制
Module.directive('a', function () {
    return {
        restrict: 'E',
        link: function(scope, element, attrs) {
            element.attr("target", "_self");
        }
    };
});

这将广告一个指向页面上所有链接(锚标记)的target="_self“。由于角度的原因,链接的劫持取决于

代码语言:javascript
复制
!elm.attr('target') = true

与目标的链接将按照预期的方式运行。

多亏了耐克对angular.js link behaviour - disable deep linking for specific URLs的答复和塞巴斯蒂安对Conditionally add target="_blank" to links with Angular JS的答复,我终于解决了这个问题:-)

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25432845

复制
相关文章

相似问题

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