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

How can I transition to a ui-router state by passing a query parameter after index.html?

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

有什么方法可以让 ui-router 直接进入状态:

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

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

谢谢

我会说,您的 SPA(单页应用程序)必须始终首先到达 index.html (与您的上一个问题相关)。其余的由 angular、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});
    }
  });

}]