AngularJS路由和锚点哈希

时间:2015-05-06 08:48:57

标签: javascript angularjs angular-ui-router

我们正在创建一个过去一年左右的角度应用程序,直到现在我们从未使用路由。现在我们已经在一些页面中尝试过了,我们喜欢动态加载模板和响应时间。

我们遇到的唯一问题是许多网页都有像<a href="#selectedTab">这样的链接。在某些地方,锚元素只表示当前选择了哪个选项卡,而在其他地方,它实际上导航到某些内容。

我们添加路由代码后如下

<script type="text/javascript">
var myApp = angular.module("myApp", ["ngRoute"]);
myApp.config(function($routeProvider) {
    $routeProvider
    .when('/page1', {
        templateUrl: '/ctx/page1.jsp',
        controller: 'page1Controller'
    }).when('/page2', {
        templateUrl: 'page2',
        controller: 'page2Controller'
    }).otherwise({
        redirectTo:'/' //what can I write here for normal # behavior
    });
});

我们所有正常的导航锚点自然不起作用。有没有办法在otherwise子句中编写一些代码来忽略一些锚点? 我已经阅读了How to handle anchor hash linking in AngularJS但它假设用户正在创建一个新应用并且有一个解决方法。此外target="_self"属性也解决了该问题,但我必须检查所有<a>标记,以删除至少为4位数的“#”。

谢谢

1 个答案:

答案 0 :(得分:2)

更新

你的html中有基本的href吗?

e.g。

<base href="/" />

你能用

试试吗?
$locationProvider.html5Mode(true);
$locationProvider.hashPrefix('!');

添加目标=&#34; _self&#34;到你的锚链接。这可以防止AngularJS重写URL。请参阅This answer on stack overflowthis discussion