2015-05-04 66 views
2

我有一個菜單控制器,它看起來是這樣的:AngularJS子菜單高亮

apoSoft.controller("MenuCtrl", function($scope, $location) { 
    $scope.menuClass = function(page) { 
    var current = $location.path().substring(1); 
    return page === current ? "active" : ""; 
    }; 
}); 

和我的菜單的一個片段是這樣的:

<ul class="nav navbar-nav"> 
    <li ng-class="menuClass('usercreate')"> 
     <a href="#!/usercreate">Create User</a> 
    </li> 
</ul> 

,這工作得很好主菜單。但現在我需要的是,如果我導航到一個子菜單,那麼相關的主菜單仍然應該突出顯示。 我需要這樣的:

... 
<li ng-class="menuClass('usercreate or usercreateresponse')"> 
... 

但這當然不工作。 有沒有人有任何想法我可以解決這個問題? 非常感謝!

回答

1

而不是在整個菜單中多次調用該函數,您可以使用一個事件偵聽器來改變一個作用域變量。我不知道你使用的路由器,所以將承擔ngRoute現在

$scope.$on('$routeChangeSuccess', function(}(
    $scope.path = $location.path().substring(1); 
}); 

然後內ng-class使用對象語法

<li ng-class="{active: path=='usercreate' || path == 'usercreateresponse'}"> 
+0

感謝 - 它的作品完美! – quma