我的主控制器中有一个导航栏,我想要一个基于网址显示/隐藏的链接。我使用ui-router进行路由,所以我认为我可以使用$ state来获取当前状态的父状态,但我不知道如何。我之前已经完成了这个以获得当前状态并且它可以正常工作
<li ng-hide="$state.current.name === 'new-sector'">
<a ui-sref="new-sector">+ Add new sector!</a>
</li>
但是现在,我正在使用嵌套状态,因此当前状态是new-sector.location。 我的问题是我希望这个链接隐藏在所有新的子行业状态中!
提前感谢您的帮助!
答案 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>