【问题标题】:how to change active class dynamically如何动态更改活动类
【发布时间】:2014-11-15 14:19:43
【问题描述】:

错误在于 ul-> li -> ng-click。 当我点击时,活动的班级没有改变。 这是我的 index.html

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/html">
<head lang="en">
    <meta charset="UTF-8">
    <title>Talent Exhibition</title>
    <script type="text/javascript" language="javascript" src="bower_components/angular/angular.js"></script>
    <script type="text/javascript" language="javascript" src="bower_components/angular-ui-   router/release/angular-ui-router.js"></script>
    <script type="text/javascript" language="javascript" src="bower_components/angular-animate/angular-animate.js"></script>
    <script type="text/javascript" language="javascript" src="bower_components/angular-resource/angular-resource.js"></script>
    <script type="text/javascript" language="JavaScript" src="app.js"></script>
    <script type="text/javascript" language="JavaScript" src="bower_components/jquery/dist/jquery.js"></script>
    <script type="text/javascript" language="JavaScript" src="bower_components/bootstrap/dist/js/bootstrap.js"></script>
    <link rel="stylesheet" type="text/css" href="bower_components/bootstrap/dist/css/bootstrap-theme.css"/>
    <link rel="stylesheet" type="text/css" href="bower_components/bootstrap/dist/css/bootstrap.css"/>
    <link rel="stylesheet" type="text/css" href="app.css"/>
</head>
<body ng-app="talent">
    <div ng-controller="navbarmenuController">
    <div class="navbar navbar-fixed-top navbar-default">
        <div class="container">
            <div class="navbar-brand">
                <a href="index.html">Talent Exhibition</a>
            </div>
            <div ng-controller="navbarformcontroller">
                <form class="navbar-form navbar-right" ng-submit="loginuser()">
                    <input type="email" ng-model="user.username" placeholder="Email" class="form-control" required>
                    <input type="password" ng-model="user.password" placeholder="Password" class="form-control" required>
                    <button class="btn btn-success" type="submit">Login</button>
                </form>
            </div>
        </div>
    </div>

    <div class="container-fluid" id="sidebar">
        <div class="row" ng-controller="headercontroller as panel">
            <div class="col-sm-2 col-lg-2 col-md-2 hidden-xs jumbotron">
                <ul class="nav nav-sidebar">
                    <li ng-repeat="tab in tabs" ng-class="{active : panel.isselected({{tab.id}})}"><a ng-click="panel.selecttab({{tab.id}})" ui-sref="{{tab.name}}">{{tab.name}}</a></li>
                </ul>

            </div>
            <div class="col-lg-9 col-sm-offset-3 col-md-10 col-md-offset-2 main" id="main" ui-view></div>
        </div>

    </div>

    </div>
</body>
</html>

我的 app.js 是

talent.controller('headercontroller', function (){
    this.tab = 1;

    this.selecttab = function (setTab){
        this.tab = setTab;
    };

    this.isselected = function (checkTab){
        return this.tab === checkTab;
    };
});

我的错误详情是

错误:[$parse:syntax] 语法错误:令牌 'tab.id' 是意外的,在表达式 [panel.selecttab({{tab.id}})] 的第 19 列期望 [:] 从 [ tab.id}})]。 (http://errors.angularjs.org/1.2.23/$parse/syntax?p0=tab.id&amp;p1=is%20unexpected%2C%20expecting%20%5B%3A%5D&amp;p2=19&amp;p3=panel.selecttab(%7B%7Btab.id%7D%7D)&amp;p4=tab.id%7D%7D) 在 (http://localhost:63342/Talent/bower_components/angular/angular.js:78:12) 在 Parser.throwError (http://localhost:63342/Talent/bower_components/angular/angular.js:10534:11) 在 Parser.consume (http://localhost:63342/Talent/bower_components/angular/angular.js:10568:12) 在 Parser.object (http://localhost:63342/Talent/bower_components/angular/angular.js:10885:14) 在 Parser.primary (http://localhost:63342/Talent/bower_components/angular/angular.js:10504:22) 在 Parser.unary (http://localhost:63342/Talent/bower_components/angular/angular.js:10757:19) 在 Parser.multiplicative (http://localhost:63342/Talent/bower_components/angular/angular.js:10740:21) 在 Parser.additive (http://localhost:63342/Talent/bower_components/angular/angular.js:10731:21) 在 Parser.relational (http://localhost:63342/Talent/bower_components/angular/angular.js:10722:21) 在 Parser.equality (http://localhost:63342/Talent/bower_components/angular/angular.js:10713:21) > (匿名函数)angular.js:10061 (匿名函数)angular.js:7357 applyDirectivesToNode angular.js:6473 compileNodes angular.js:6036 compileNodes angular.js:6048 编译 angular.js:5969 applyDirectivesToNode angular.js:6379 compileNodes angular.js:6036 compileNodes angular.js:6048 compileNodes angular.js:6048 compileNodes angular.js:6048 compileNodes angular.js:6048 compileNodes angular.js:6048 compileNodes angular.js:6048 编译 angular.js:5969 (匿名函数)angular.js:1449 Scope.$eval angular.js:12673 Scope.$apply angular.js:12771 (匿名函数)angular.js:1447 调用 angular.js:3966 doBootstrap angular.js:1445 引导 angular.js:1459 angularInit angular.js:1368 (匿名函数)angular.js:21949 触发 angular.js:2573 (匿名函数)angular.js:2853 forEach angular.js:325 eventHandler angular.js:2852"

【问题讨论】:

    标签: javascript jquery node.js angularjs twitter-bootstrap


    【解决方案1】:

    我认为ng-click 指令中的把手是多余的。在没有他们的情况下尝试:

    <a ng-click="panel.selecttab(tab.id)" ui-sref="{{tab.name}}">{{tab.name}}</a>
    

    通常,如果您绑定到裸标记中的值,而不是指令中的值,则只需要花括号。

    https://docs.angularjs.org/guide/templates

    这意味着您可能也不希望它们出现在您的 ui-sref 指令中:

    <a ng-click="panel.selecttab(tab.id)" ui-sref="tab.name">{{tab.name}}</a>
    

    【讨论】:

      猜你喜欢
      • 2016-07-20
      • 2014-08-11
      • 1970-01-01
      • 1970-01-01
      • 2020-06-10
      • 1970-01-01
      • 1970-01-01
      • 2022-11-01
      • 2023-04-01
      相关资源
      最近更新 更多