angular ui路由器在哈希之前放置查询字符串

mmj*_*ers 6 javascript angularjs angular-ui-router

我有一个使用外部支付提供商购买积分的应用程序.成功购买后,付款服务提供商会重定向到http://any.url/?orderNr=xxxx&outcome=SUCCESS.这个url是一个使用UI路由器的AngularJS应用程序.路由器的配置如下:

$stateProvider
    .state('dashboard', {
        url: '/dashboard',
        templateUrl: 'views/dashboard.html',
        controller: 'DashboardCtrl',
        isAuthenticated: true
    })
    .state('login', {
        url: '/login',
        templateUrl: 'views/login.html',
        controller: 'LoginCtrl',
        isAuthenticated: false
        });

$urlRouterProvider.otherwise('/login');
Run Code Online (Sandbox Code Playgroud)

因此,当用户返回到root用户http://any.url并且已经登录时,它会重定向到仪表板.付款后就是这种情况,因为您无法在不登录的情况下进行付款.问题是hashbang位于查询字符串之后,因此仪表板的url变为http://any.url/?orderNr=xxxx&outcome=SUCCESS#/dashboard.在DashboardCtrl我无法获取查询字符串使用$location.search().有没有办法让查询字符串成为'角度方式',所以不能通过解析location.href

TVa*_*ann 0

如果您需要 #/dashboard 路由的查询字符串,您应该能够在 url 配置中指定参数。

.state('dashboard', {
    url: '/dashboard?orderNr&outcome',
Run Code Online (Sandbox Code Playgroud)

根据文档