使用UI路由器更改URL中的查询参数

时间:2016-01-26 22:38:16

标签: angularjs angular-ui-router

使用ui-router如何完成以下URL更改?例如,当用户转到“/ page?hello = True”时,我希望网址更改为“/ page?status = hello”。

$stateProvider.state('page', {
   url: '/page/:id?status',
   controller: 'MyCtrl as myCtrl',
   templateProvider: function($templateCache) {
     return $templateCache.get('templates/route.html');
   }
 });

1 个答案:

答案 0 :(得分:1)

您可以使用app.run方法中的stateChangeStart事件来侦听对该路线的状态更改,并在参数上更改您想要的任何内容。这样的事情,可能需要与toStatetoParams一起使用才能让它适合您......

.run(['$state', '$rootScope', function($state, $rootScope) {
    $rootScope.$on('$stateChangeStart', function(e, toState, toParams, fromState, fromParams) {

        if (toState.name === 'invitation') {
            //change toParams to whatever you want 
        }
    });
});