AngularJS UI-Router:从主页面到子页面 - 菜单激活

时间:2015-11-21 07:18:56

标签: angularjs

我在我的应用程序中使用AngularJS ui-router并且我有一个mainPage,我可以通过单击主页面上的图标导航到子页面。

如果我在子页面上,主菜单项被标记为活动 - 这可以正常工作。 但是,如果我点击主菜单返回我来自的主页面,菜单项将被取消激活(活动颜色消失) 这是我的菜单列表项目:

<li ng-class="{'active': vm.state.includes('auth.subPageReachedByIconOnPage')}" ui-sref="auth.mainPage" ui-sref-active="active"><a>Main Page Menu Text</a></li>

有没有可能解决我的问题?

1 个答案:

答案 0 :(得分:0)

您的ng-classui-sref-active属性互相覆盖。例如,如果您当前的状态为'auth.subPageReachedByIconOnPage' ng-class,则会将active类添加到您的li标记中。如果您的州为'auth.mainPage',则ui-sref-active会在您的代码中添加active类,但ng-class会覆盖此更改并删除此类,因为语句vm.state.includes('auth.subPageReachedByIconOnPage')会返回假的。

我发现至少有两种方法可以解决这个问题:

1)将用于添加active类的语句组合到一个语句中。为此,您应移除ui-sref-active属性并向ng-class添加其他语句。像这样:

<li ng-class="{'active': vm.state.includes('auth.subPageReachedByIconOnPage') || vm.state.includes('auth.mainPage')}" ui-sref="auth.mainPage"><a>Main Page Menu Text</a></li>

plunker上的示例。

2)第二种方法是在应用中重构你的状态。您可以将'subPageReachedByIconOnPage'移至'auth.mainPage'州。之后,您可以删除ng-class属性。如果用户位于ui-sref-activeactive,则auth.mainPage会添加课程auth.mainPage.subPageReachedByIconOnPage。但我对您的申请一无所知,因此在您的案例中实施起来并不容易。