父状态重定向的ui-sref-active问题

时间:2014-12-18 09:10:45

标签: angularjs angular-ui angular-ui-router

这可能是一个骗局,但我找不到能够完全解决问题的答案。

让我们说我有3个州。

帐户
account.settings
account.users

我希望在两个子状态中都有一个活动链接,所以我有一个像这样的链接

<a ui-sref="account" ui-sref-active="active">

当我点击此链接时,我想重定向到 account.settings 状态。 所以我在&#34; onEnter&#34;中添加了重定向,但这仅在我第一次点击链接时触发。所以我点击链接并重定向到 account.settings 状态,但如果我再次点击它,onEnter不会触发,所以我会被扔到帐户国家,这不是我想要的。

我尝试在状态控制器中添加逻辑而不是相同的结果,我也尝试使用 $ urlRouterProvider.when()函数重定向但我和#39;用这种方法遇到类似的问题。

我觉得我在某个地方错过了一个点,我应该&#34;陷入困境&#34;那一刻,但我现在几天都在苦苦挣扎,我似乎无法得到它。

1 个答案:

答案 0 :(得分:1)

如果您想追求重定向解决方案,您应该在$ stateChangeStart事件中执行此操作。类似的东西:

$rootScope.$on('$stateChangeStart', function(event, toState, fromState){
    if (toState.name === 'account' &&
        (fromState.name === 'account.settings' || fromState.name === 'account.users')){
        event.preventDefault();
        $state.transitionTo('account.settings');
    }
});

但是你总是可以sref到正确的account.settings并使用绑定到范围内的函数的ngClass来决定链接是否应该是活动的,并避免重定向。