如果我访问网页www.abc.com/index.html?state=register
ui-router是否有办法让它直接进入状态:
$state.transitionTo("auth.content", { content: "register" })
请注意,如果用户输入www.abc.com,我希望他们转到使用/ state设置的普通页面。
由于
答案 0 :(得分:1)
我想说,您的SPA(单页应用程序)必须始终到达index.html
第一个(与您的上一个问题相关)。剩下的工作是由角度来完成的,由UI-Router完成 - 但所有这些都必须从index.html
我们可以使用UI-Router
.otherwise()
或.when()
$urlRouterProvider
的设置。这里描述了如何实现这一目标的方法:
基本上我们可以使用 .when()
var whenConfig = ['$urlRouterProvider', function($urlRouterProvider) {
$urlRouterProvider
.when('/app/list', ['$state', 'myService', function ($state, myService) {
$state.go('app.list.detail', {id: myService.Params.id});
}])
.otherwise('/auth/content');
}];
...
app.config(whenConfig)
但版本2.0.13存在一些问题,此处描述了解决方案:
显示我们必须使用.when()
的某些修补程序,如:
var onChangeConfig = ['$rootScope', '$state',
function ($rootScope, $state) {
$rootScope.$on('$stateChangeStart', function (event, toState) {
if (toState.name === "app.list") {
event.preventDefault();
$state.go('app.list.detail', {id: 2});
}
});
}]