当地址是随机的时,Angularjs突出显示菜单项

时间:2014-03-20 13:28:55

标签: javascript angularjs

我有以下代码: HTML

<li ng-class="{ highlight: isActive('/admin/trackDef/list') || isActive('/admin/trackDef/add')}">
    <a href="${createLink(uri: '/#/admin/trackDef/list')}"></a>
</li>

Js控制器

.controller('navCtrl', ['$scope', '$location', function ($scope, $location) {
    $scope.isActive = function (viewLocation) {
        return viewLocation === $location.path();
    };
    $scope.isAnyActiveAdmin = function () {
        return ['/admin/trackDef/list', '/admin/trackDef/add', '/admin/country/list','/admin/country/add', '/admin/user/list', '/admin/user'].indexOf($location.path()) > -1;
    };
}])

.config(['$routeProvider', function ($routeProvider) {
    $routeProvider.
        when('/admin/trackDef/list', {
            templateUrl: 'assets/trackDef/trackDef-list.tpl.html',
            controller: 'PaginatedListController',
            resolve: {Service: 'TrackDefServices'}
        }).
        when('/admin/trackDef/add', {
            templateUrl: 'assets/trackDef/trackDef-save.tpl.html',
            controller: 'TrackDefController'
        }).
        when('/admin/trackDef/:id', {
            templateUrl: 'assets/trackDef/trackDef-save.tpl.html',
            controller: 'TrackDefController'
        });
}])

如何突出显示具有随机地址的页面,如:

  

/管理/ trackDef / 123       /管理/ trackDef / 234       /管理/ trackDef / 534

1 个答案:

答案 0 :(得分:0)

我认为你可以简化一些事情并使用JS函数indexOf(),类似于你在isAnyActiveAdmin()中使用它的方式

您的isActive()看起来与此相似:

$scope.isActive = function () {
    return $location.path().indexOf("admin") ? true : false
};

这适用于包含admin的任何路径。