javascript - 从 Controller AngularJS 中突出显示事件页面

标签 javascript html angularjs

我遇到过多种形式的此类问题,但没有一个对我的情况足够具体。我有一个基本的 AngularJS 应用程序,其中相关 html 的部分内容是:

<nav class="navbar" ng-controller="NavController as nav">
    <ul class="nav" ng-bind-html="pages"></ul>
</nav>

Controller 定义为:

app.controller('NavController', ['$scope', '$sce', '$route', '$location', function($scope, $sce, $route, $location) {


    pages = {
        'home' : '#/',
        'resume/cv' : '#/resume',
        'publications' : '#/publications',
        'contact' : '#/contact'
    };


    $scope.getClass = function(page) {
        // if ($route.current.activetab == page)
        //  return 'active' ;

        console.log(('/' + page) === $location.path());

        if (('/' + page) === $location.path())
            // return 'active';
            return true;
        else
            return false;
    };

    $scope.listPages = function() {
        ret = '' ;

        for (key in pages) {
            // ret += '<li><a href="' + pages[key] + '" ng-class="' + $scope.getClass(key) + '">' + key + '</a></li>' ;
            ret += '<li><a href="' + pages[key] + '" ng-class="{active:' + $scope.getClass(key) + '}">' + key + '</a></li>' ;
            // ret += '<li><a href="' + pages[key] + '" ng-class="{active: $route.current.activetab == ' + key + '">' + key + '</a></li>' ;
        }

        return ret
    };

    $scope.pages = $sce.trustAsHtml($scope.listPages()) ;

}]);

根据评论,您可以看到我已经尝试了几种 ret 变量。我可以使用 class="+ $scope.getClass(page) 获得一个事件类,但是当我点击其他链接时它不会更新。我求助于 ng-class,但它似乎并没有把类放到位。

如有必要,我可以提供额外的代码或输出。

最佳答案

你不应该使用 ngBindHtml 只使用 ngRepeat 来呈现列表:

<nav class="navbar" ng-controller="NavController as nav">
    <ul class="nav">
        <li ng-repeat="(key, value) in pages">
            <a ng-href="{{value}}" ng-class="{active: getClass(key)}">{{key}}</a>
        </li>
    </ul>
</nav>

pages 是范围属性:

$scope.pages = {
    'home' : '#/',
    'resume/cv' : '#/resume',
    'publications' : '#/publications',
    'contact' : '#/contact'
};

关于javascript - 从 Controller AngularJS 中突出显示事件页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33576436/

相关文章:

javascript - 如果字符串中只有一个单词或没有空格,则使用 jQuery/Javascript 分割字符串时出现问题

javascript - 使用 jquery double 调用 ajax

javascript - 工厂未在 Angular JS 中定义

angularjs - 如何使用 ng-repeat 以表格格式显示分层数据

angularjs - ios 上的 Angular/ ionic iframe 问题

javascript - jQuery Toggle 无法在本地和我的网站上运行,但可以在 jsFiddle 上运行?

javascript - 如何使随机选择器只选择显示的项目?

html - 在css中定位两个元素

html - 圆 table Angular

html - CSS 下拉菜单似乎落后