如果它只是一级导航/菜单,则 url 如“localhost/#/user”
我知道我可以使用:
<ul>
<li ng-class="{active: isActive('/user')}><a href="#/user'>User</a></li>
</ul>
并在控制器中
$scope.isActive = function (path) {
if ( path == $location.path() )
return true;
return false;
};
然后当 url 为“localhost/#/user”时,将添加“active”。
然而,当涉及到两级菜单时,像“localhost/#/user/orders”这样的网址
<ul>
<li>
<a href="#/user'>User</a>
<ul>
<li><a href="#/user/orders'>Orders</a></li>
</ul>
</li>
</ul>
如何根据 url 向项目“订单”及其父“用户”添加“活动”类? (所以我可以突出显示它们)
提前致谢。
更新:
谢谢,它现在可以工作了:D
@Nikos Paraskevopoulos,@piatek,@Chandermani谢谢
这是我用 CoffeeScript 编写的最终工作代码,虽然代码不够好,但它可以工作:)
.directive('highlightActive', () ->
return {
restrict: "A"
controller: [
'$scope', '$element', '$attrs', '$location'
($scope, $element, $attrs, $location) ->
links = $element.find('a')
path = () ->
return $location.path()
highlightActive = (links, path) ->
path = '#' + path
angular.forEach(links, (link) ->
$link = angular.element(link)
$li = $link.parent('li')
href = $link.attr('href')
if ($li.hasClass('active'))
$li.removeClass('active')
if path.indexOf(href) is 0
$li.addClass('active')
)
highlightActive(links, $location.path())
$scope.$watch(path, (newVal, oldVal) ->
if newVal is oldVal
return
highlightActive(links, $location.path())
)
]
}
)