【发布时间】:2015-10-08 16:14:35
【问题描述】:
背景
我创建了一个左侧菜单的应用程序,其中包含多个菜单项。当用户单击一个项目(或通过 URL 访问它)时,我想突出显示该项目(即在相应的<li> 上应用“活动”类)。
注意:我使用ui.router 处理路由。
我尝试了什么
到目前为止,我尝试使用ng-class 指令:
<div class="col-sm-3 col-md-2 sidebar">
<ul class="nav nav-sidebar">
<li ng-class="{active: current=='container.item1'}">
<a href="#/a/item1">Item 1</a>
</li>
<li ng-class="{active: current=='container.item2'}">
<a href="#/a/item2">Item 2</a>
</li>
<li ng-class="{active: current=='container.item3'}">
<a href="#/a/item3">Item 3</a>
</li>
</ul>
在 js 方面:
.controller('container', function($scope, $rootScope, $state) {
$rootScope.$on('$stateChangeSuccess',
function(){
$scope.current = $state.current.name;
}
)
})
效果很好,但我想知道是否可以直接在 模板 中引用状态,而无需手动处理事件。类似的东西:
<ul class="nav nav-sidebar">
<li ng-class="{active: $state.current.name =='container.item1'}">
<a href="#/a/item1">Item 1</a>
</li>
<li ng-class="{active: $state.current.name =='container.item2'}">
<a href="#/a/item2">Item 2</a>
</li>
(这不起作用)
有什么想法吗?
【问题讨论】:
标签: angularjs angularjs-scope angular-ui-router state