Angular ui路由器向url添加哈希
Angular ui-router adding hash to url
我正在为一个带有angular和angular ui路由器的应用程序设置脚手架。我已经工作了,但它似乎在我的url中添加了一个散列(我在localhost上运行dev)localhost:9000/#/test。当我登录主页时,它只是localhost:9000,并且它仍然提供主视图内容。如果可能的话,我想去掉这个杂碎。
这是我的设置:
在我的index.html中,我只有我的导航,然后是下面的ui视图:
<div class="row">
<ul class="nav navbar-nav">
<li><a ui-sref="index">Home</a></li>
<li><a ui-sref="test">Test</a></li>
</ul>
</div>
<div ui-view=""></div>
在我的应用程序.js中,我只有:
angular
.module('playApp', [
'ui.router'
])
.config(function($stateProvider) {
$stateProvider
.state('index', {
url: '',
templateUrl: 'views/main.html',
controller: 'MainCtrl'
})
.state('test', {
url: '/test',
templateUrl: 'views/test.html',
controller: 'testCtrl'
});
});
所以当我着陆时,这很好,但当我开始使用我设置的导航时,它会将哈希添加到url中,如果可能的话,我宁愿不使用它们。谢谢
包括$locationProvider
并执行$locationProvider.html5Mode(true);
:
angular.module('playApp', ['ui.router'])
.config(function($stateProvider, $locationProvider) {
$stateProvider.state('index', {
url: '',
templateUrl: 'views/main.html',
controller: 'MainCtrl'
})
.state('test', {
url: '/test',
templateUrl: 'views/test.html',
controller: 'testCtrl'
});
$locationProvider.html5Mode(true);
});
我也有一个otherwise
,所以如果它找不到指定的路线,它将默认返回:
angular.module('playApp', ['ui.router'])
.config(function($stateProvider, $locationProvider, $urlRouterProvider) {
$stateProvider.state('index', {
url: '',
templateUrl: 'views/main.html',
controller: 'MainCtrl'
})
.state('test', {
url: '/test',
templateUrl: 'views/test.html',
controller: 'testCtrl'
});
$locationProvider.html5Mode(true);
$urlRouterProvider.otherwise('/');
});
将$locationProvider注入您的配置并将html5mode设置为true:
angular.module('playApp', [
'ui.router'
])
.config(function($stateProvider, $locationProvider ) {
$stateProvider
.state('index', {
url: '',
templateUrl: 'views/main.html',
controller: 'MainCtrl'
})
.state('test', {
url: '/test',
templateUrl: 'views/test.html',
controller: 'testCtrl'
});
$locationProvider.html5Mode(true);
});
请确保调整.htaccess以处理此问题(重写回root)。
有一种html5Mode
的替代方案。但它也有缺点。
在定义ui路由器状态时,不需要url
选项。根据该文件:
您可能会创建一些没有URL的子状态,如果将这些子状态添加为书签是没有意义的。状态机像往常一样在无url的状态之间转换,但完成后不会更新url。您仍然可以获得状态转换的所有其他好处,如参数、解析和生命周期挂钩。
如果不需要提供状态的URL以便用户可以为这些状态添加书签,则可以省略url
选项。URL不会更改。
相关文章:
- 动态添加哈希标记;t工作
- 单击引导模式锚点时添加 URL 哈希
- Angular ui路由器向url添加哈希
- 咕哝:咕哝rev任务通过添加随机哈希来更改我的图像,从而阻止我的html识别它们
- Jquery在尝试添加url参数时添加哈希符号
- 当用户将哈希添加到URL时,重新加载浏览器
- 为所有哈希链接/调用的滚动位置添加自动偏移量
- 如何阻止任何滑块向 URL 添加哈希标签
- AngularJS-自动向URL添加哈希标签-覆盖搜索参数
- AngularJS 1.1.5-自动向URL添加哈希标签
- 每个图像的唯一URL(最好只添加哈希),直接显示弹出图像
- 在location.pathname前添加哈希值
- 从URL中删除哈希,以无哈希URL加载页面,然后在不重新加载页面的情况下向URL添加哈希
- 如何跟踪一个javascript行为的起源,特别是-添加哈希到我的url
- 在javascript / backbone中添加哈希键
- Javascript -在锚链接上的焦点/跳转在所有浏览器中表现相同(加上可能添加哈希#链接)
- 使用resume .js添加哈希
- 对于不支持的浏览器,Angular不会向ng-href中添加哈希值
- 带页面的聚合物路由.js在新选项卡中打开链接时,不要向 URL 添加哈希标记
- JQuery Ajax在url中添加哈希值