【发布时间】:2017-02-28 05:48:22
【问题描述】:
我目前正在使用带有 UI-Router 的 AngularJS 进行状态管理并在后端表达。
我目前启用了 hash bang 模式,并且一直在尝试找到一种解决方案,允许您在地址栏中手动键入 URL 而无需 hash bang。
例如,而不是键入:
www.mysite.com/#!/page1
我希望能够打字
www.mysite.com/page1
我尝试过启用 html5Mode:
$locationProvider.html5Mode(true)
.hashPrefix('!');
但它仍然不起作用。通过上述更改,单击任何 URL 将重写并将位置从 '#!/page1' 更改为 '/page1'。太棒了。
但是,使用“/page1”手动输入 URL 不起作用,并且会出现无效路径错误。如果我键入它时包含哈希爆炸,即“#!/page1”,那么它会起作用,并且还会在页面加载后将 URL 重写为“/page1”。
那么我在这里做错了什么?
我的状态如下所示:
state('login', {
url: '/login',
templateUrl: 'login.html'
}).
state('parent', {
url: '/hello',
abstract: true,
template: '<ui-view/>'
}).
state('parent.home', {
url: '',
controller: 'SomeCtrl',
templateUrl: 'page.html'
}).
state('parent.file', {
url: '/bob',
controller: 'SomeCtrl2',
templateUrl: 'file.html'
})
【问题讨论】:
-
您是否尝试过仅删除前缀?或者,你正在做一些需要它的事情吗?我只有
$locationProvider.html5Mode(true);。 -
是的,我做到了,没有运气,所以它看起来像 livepo 建议的那样,它可能是服务器端的,我要尝试一下。
标签: javascript html angularjs angular-ui-router