我们正在创建一个过去一年左右的角度应用程序,直到现在我们从未使用路由。现在我们已经在一些页面中尝试过了,我们喜欢动态加载模板和响应时间。
我们遇到的唯一问题是许多网页都有像<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位数的“#”。
谢谢
答案 0 :(得分:2)
更新
你的html中有基本的href吗?
e.g。
<base href="/" />
你能用
试试吗?$locationProvider.html5Mode(true);
$locationProvider.hashPrefix('!');
添加目标=&#34; _self&#34;到你的锚链接。这可以防止AngularJS重写URL。请参阅This answer on stack overflow和this discussion