【问题标题】:ui-sref-active problems with parent state redirection父状态重定向的 ui-sref-active 问题
【发布时间】:2014-12-18 18:38:27
【问题描述】:

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

假设我有 3 个州。

帐户
account.settings
account.users

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

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

当我点击这个链接时,我想重定向到 account.settings 状态。 所以我在“onEnter”中添加了一个重定向,但这只会在我第一次点击链接时触发。所以我点击链接并被重定向到 account.settings 状态,但是如果我再次点击它,onEnter 不会触发,所以我会被扔到 account 状态,这不是我想要的。

我尝试在状态控制器中添加逻辑,但结果相同,我还尝试使用 $urlRouterProvider.when() 函数进行重定向,但我已经运行这种方法的类似问题。

我觉得我在某个地方遗漏了一点,我应该有“明白”的时刻,但我已经为此苦苦挣扎了几天,但我似乎无法理解。

【问题讨论】:

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


    【解决方案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 来决定链接是否应该处于活动状态,并避免重定向。

    【讨论】:

    • 哦,谢谢,我以前试过这个,但没有preventDefault。如果您在似乎的 transitionTo 函数周围添加一个超时包装器,这也可以工作,但这根本不像这样流畅。谢谢!
    猜你喜欢
    • 2017-11-01
    • 2018-02-15
    • 2014-04-08
    • 2015-05-03
    • 1970-01-01
    • 2015-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多