可以禁用$ locationProvider和$ routeProvider?

时间:2013-06-12 22:45:16

标签: angularjs location-provider route-provider

我可以禁用这些人吗?我在asp.net mvc应用程序中使用angular.js,我不需要角度来控制与地址栏或链接相关的任何内容......

现在,在禁用html5模式($locationProvider.html5Mode(false))时,它会将哈希和操作方法的名称添加到地址栏中,例如:您转到\Home\index,它会导航,然后将条形文本更改为Home\index#\index。这不是很烦人吗?

如果我启用html5模式,它会停止加载页面(初始除外)。我尝试从初始加载的页面转到另一个页面 - 它更改了地址栏的文本(这次不添加主题标签)但不会加载页面本身。是不是很令人沮丧?

1 个答案:

答案 0 :(得分:5)

这里有一个临时解决方案AngularJS 1.1.5 - automatically adding hash tag to URLs

答案解释了第一步(如上所述,添加了新的哈希前缀)

yourApp.config(['$locationProvider', function($locationProvider){
    $locationProvider.html5Mode(true).hashPrefix('!');
}]);

第一位处理Angular干扰您的地址栏视觉,但现在点击任何链接都无法正常工作(阅读:history.pushState

因此,用户@Kevin Beal指出的解决方法是将target的{​​{1}}设置为<a>

的一些变体
_self

或根据具体情况:

$('a[href]').attr({'target':'_self'})

虽然为了方便和理智,我认为这是这些的组合。

标记没有<a href="foo" target="_self">Foo</a> <a href="http://some.external/bar" target="_blank">Bar</a>

target

JS

<a href="foo">Foo</a>
<a href="http://some.external/bar">Bar</a>

值得注意的是,上面的选择器需要jQuery。