如何通过在index.html之后传递查询参数来转换到ui-router状态?

时间:2015-01-15 09:49:12

标签: angularjs angular-ui-router

如果我访问网页www.abc.com/index.html?state=register

ui-router是否有办法让它直接进入状态:

$state.transitionTo("auth.content", { content: "register" })

请注意,如果用户输入www.abc.com,我希望他们转到使用/ state设置的普通页面。

由于

1 个答案:

答案 0 :(得分:1)

我想说,您的SPA(单页应用程序)必须始终到达index.html第一个(与您的上一个问题相关)。剩下的工作是由角度来完成的,由UI-Router完成 - 但所有这些都必须从index.html

开始

我们可以使用UI-Router

  • .otherwise()
  • .when()

$urlRouterProvider的设置。这里描述了如何实现这一目标的方法:

Angular UI-Router $urlRouterProvider .when not working *anymore*

基本上我们可以使用 .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存在一些问题,此处描述了解决方案:

Angular UI-Router $urlRouterProvider .when not working when I click

显示我们必须使用.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});
    }
  });

}]