我在我的应用程序中使用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>
有没有可能解决我的问题?
答案 0 :(得分:0)
您的ng-class
和ui-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-active
或active
,则auth.mainPage
会添加课程auth.mainPage.subPageReachedByIconOnPage
。但我对您的申请一无所知,因此在您的案例中实施起来并不容易。