我需要更改现有的AngularJS应用程序,使用以下格式的URL:
example.com/thePage/#/section/1/subsection/1
制作章节&服务器可读的子部分参数,格式如下:
example.com/thePage?section=1&subsection=1
环境不提供类似mod_rewrite的东西,所以我需要在Angular中更改路由以使其处理&生成这些URL。我相信我可以使用$locationProvider.html5Mode(true);
来做到这一点但是我不知道如何从那里开始。我已经尝试将现有路由更新为类似下面的内容,但是它无法返回视图(就好像路由不起作用。
$stateProvider
.state('section', {
abstract: true,
url: '?section',
views: {
'header': {
template: '<h3></h3>'
},
'main': {
templateUrl: constants.baseUrl + 'views/section.html',
controller: 'sectionCtrl',
resolve: {
section: ['sectionervice', '$stateParams',
function (sectionervice, $stateParams) {
return sectionervice.getsection($stateParams);
}],
subsection: ['sectionervice', '$stateParams',
function (sectionervice, $stateParams) {
return sectionervice.getsubsection($stateParams);
}]
}
}
}
})
.state('section.detail.subsection', {
url: '&subsection=:sectionId',
views: {
'main': {
templateUrl: constants.baseUrl + 'views/section.detail.subsection.html',
controller: 'DictionaryCtrl'
}
}
});
$stateProvider
似乎只能使用正斜杠(/)参数分隔符。还有另一种方法来实现这一目标吗?
答案 0 :(得分:0)
在ui-router网站上有一个你想要做的简单例子。
也许你可以做同样的事情,看看RouteProvider和StateProvider设置。
url:http://angular-ui.github.io/ui-router/sample/app/app.js
在服务器端,您可以检索网址,以便获取参数。
[编辑]
关于$locationProvider.html5Mode(true);
您可以执行此操作并在路由和状态提供商中进行设置,不会干扰功能