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

时间:2014-06-18 07:10:36

标签: 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');

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

1 个答案:

答案 0 :(得分:0)

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

.state('dashboard', {
    url: '/dashboard?orderNr&outcome',

根据docs