Javascript AngularJS::HTML5模式+;正常链接行为
我对angular很陌生,目前在一个网站上面临一个问题,我们需要html5Mode(true),同时保持正常链接的工作方式,就像使用html5Mode(false)一样 我们在html标签中有我们的ng应用程序,所以整个页面由一个模块控制。在某些页面上,我们需要通过ajax加载新内容,并更改特定控制器中的底层模型。这会将URL更改为新的(绝对)URL。通过$locationProvider.html5Mode(true)实现这一点有点简单;在模块配置中 现在的问题是:当我们激活HTML5模式时,普通链接将不再像预期的那样工作。有没有办法在不将页面分割成多个模块的情况下实现所需的行为,从而将“正常链接”排除在模块的角度和HTML5模式设置的范围之外 我的想法是在控制器函数中简单地使用history.pushState(),它处理内容重新加载的单击事件,但这一方面会引发很多异常,另一方面甚至不能正常工作 非常感谢您的任何想法:-)Javascript AngularJS::HTML5模式+;正常链接行为,javascript,angularjs,pushstate,Javascript,Angularjs,Pushstate,我对angular很陌生,目前在一个网站上面临一个问题,我们需要html5Mode(true),同时保持正常链接的工作方式,就像使用html5Mode(false)一样 我们在html标签中有我们的ng应用程序,所以整个页面由一个模块控制。在某些页面上,我们需要通过ajax加载新内容,并更改特定控制器中的底层模型。这会将URL更改为新的(绝对)URL。通过$locationProvider.html5Mode(true)实现这一点有点简单;在模块配置中 现在的问题是:当我们激活HTML5模式时,
致以最良好的祝愿,SubnetOne我终于找到了解决方案:
Module.directive('a', function () {
return {
restrict: 'E',
link: function(scope, element, attrs) {
element.attr("target", "_self");
}
};
});
这会将target=“\u self”广告到页面上的所有链接(锚定标签)。由于angulars劫持链接取决于
!elm.attr('target') = true
与目标的链接的行为将与预期的一致
多亏了Niks的回答
塞巴斯蒂安回答了这个问题
我最终解决了这个问题:-)最后我找到了解决方案:
Module.directive('a', function () {
return {
restrict: 'E',
link: function(scope, element, attrs) {
element.attr("target", "_self");
}
};
});
这会将target=“\u self”广告到页面上的所有链接(锚定标签)。由于angulars劫持链接取决于
!elm.attr('target') = true
与目标的链接的行为将与预期的一致
多亏了Niks的回答
塞巴斯蒂安回答了这个问题
我终于解决了这个问题:-)你是个救生员!你是个救生员!