ui-router preventDefault()但保留URL,或更改声明状态的URL

时间:2014-10-08 18:47:48

标签: angularjs angular-ui-router

两个相似/相关的问题:

1)在$stateChangeStart事件中,是否可以允许更改网址,但是阻止实际的状态转换?

如果我使用event.preventDefault(),则会阻止更新网址。

2)是否可以更改您已创建的州的网址?

我创建了一个没有网址的状态,我用它来显示未授权状态的不同模板(如果用户没有正确的授权,他们会被重定向到此状态州,但我希望URL反映他们试图访问原始网址。)

$stateProvider.state('unauthorized-role', {
    data: {
        targetState: null
    },
    views: {
        'main-view': {
            controller: 'UnauthorizedCtrl',
            templateUrl: '/src/app/role-unauthorized.tpl.html'
        }
    }
});

当我重定向到此状态时(在$stateChangeStart中),我会执行以下操作:

ev.preventDefault();

var unauthState = $state.get('unauthorized-role');
unauthState.url = toState.url;
unauthState.data.targetState = toState;
$state.go(unauthState);

但它并没有继承新的网址。是否有可能以某种方式改变它?

1 个答案:

答案 0 :(得分:0)

$state.go(unauthState, { location: false });