AngularJS :: html5Mode +正常链接行为

时间:2014-08-21 17:53:30

标签: javascript angularjs pushstate

我对角度很新,目前在网站上遇到问题,我们需要html5Mode(true),同时保持普通链接的工作方式与html5Mode(false)相同。

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

现在问题:当我们激活html5Mode时,普通链接将不再按预期工作。是否有任何方法可以实现所需的行为,而不会将页面分成多个模块,使得“普通链接”超出了角度范围和模块的html5Mode设置?

我有想法在控制器函数中简单地使用history.pushState()来处理内容重新加载的click事件,但这确实会引发很多异常,甚至不起作用另一方面,正确的。

非常感谢任何想法: - )

最好的问候,SubnetOne

1 个答案:

答案 0 :(得分:4)

最后我找到了解决方案:

Module.directive('a', function () {
    return {
        restrict: 'E',
        link: function(scope, element, attrs) {
            element.attr("target", "_self");
        }
    };
});

此广告为目标=“_ self”广告到页面上的所有链接(锚标记)。由于角色劫持链接取决于

!elm.attr('target') = true

与目标的链接将表现得像预期的那样。

感谢Niks的回答 angular.js link behaviour - disable deep linking for specific URLs 和塞巴斯蒂安人回答 Conditionally add target="_blank" to links with Angular JS我最终解决了这个问题: - )