基于父状态的ng-hide

时间:2014-08-21 03:22:21

标签: javascript angularjs angular-ui-router

我的主控制器中有一个导航栏,我想要一个基于网址显示/隐藏的链接。我使用ui-router进行路由,所以我认为我可以使用$ state来获取当前状态的父状态,但我不知道如何。我之前已经完成了这个以获得当前状态并且它可以正常工作

<li ng-hide="$state.current.name === 'new-sector'">
    <a ui-sref="new-sector">+ Add new sector!</a>
</li>

但是现在,我正在使用嵌套状态,因此当前状态是new-sector.location。 我的问题是我希望这个链接隐藏在所有新的子行业状态中!

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

您始终可以使用$state.includes(stateName)检查当前活动状态是否等于或是状态stateName的子级。

以下是example plnkr,其中显示了$state.includes的使用情况。

有关wiki

的更多详情

答案 1 :(得分:0)

再加上Chris T的答案:

为了避免同时创建控制器并为每个状态注入$ scope和$ state,您只需使用.run()并将状态信息存储在rootscope中。

app.run( function($state, $rootScope){
    $rootscope.stateHolder = $state.current;
  }
);

此外,如果您只对州名称感兴趣,只需在$ state.current末尾添加.name。

然后可以通过以下方式轻松访问:

<div ng-hide="stateHolder.name == 'home'">
  This will be hidden on the home page.
</div>