ngTable更新ngClass导致错误

时间:2014-10-28 08:39:40

标签: angularjs ng-class ngtable

我正在使用esvit' ngTable。显示大量数据。

但是当我尝试添加ng-class(fn)时。首先渲染它(显示信息类),但是当我操纵数据时(就像我在user上更改属性获胜者时(来自ng-click="(toggleWinner(user))"),它会抛出错误而不是更新类。

ngTable:

<div ng-show="(answers).length > 0">
    <table  ng-table="tableParams" template-pagination="custom/pager" class="table table-striped table-bordered table-hover" style="margin-top: 12px;">
        <tr style="cursor:pointer;" ng-click="toggleWinner(user);" ng-repeat="user in $data" ng-class="getClass(user)"> 
            <td data-title="'Bruger'" sortable="'name'">{{user.name}}</td>
            <td data-title="'Email'"  sortable="'email'">{{user.email}}</td>
            <td data-title="'Firma'"  sortable="'company'">{{user.company}}</td>
            <td data-title="'Mobil'"  sortable="'mobile'">{{user.mobile}}</td>
            <td data-title="'Vundet dato'" >{{getPreviousWinnings(user.email)}}</td>
            <td data-title="'Udvælg Vinder'" >
                <span ng-show="user.winner == true" class="glyphicon glyphicon-ok" style="color:darkgreen"></span>
            </td>
        </tr>
    </table>
</div>

的getClass(用户)

 $scope.getClass = function(user) {
        if (user.winner) {
            return "success";
        } else if ($scope.getPreviousWinnings(user.email).length > 0) {
            return "info";
        } else {
            return "";
        }
    };

我希望你能提供帮助,谢谢你看看

错误说明:

TypeError: undefined is not a function
    at Object.k [as fn] (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular.min.js:136:370)
    at h.$digest (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular.min.js:106:311)
    at h.$apply (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular.min.js:109:287)
    at HTMLTableRowElement.<anonymous> (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular.min.js:189:372)
    at HTMLTableRowElement.m.event.dispatch (local/js/libs/jquery-1.11.1.min.js:3:8436)
    at HTMLTableRowElement.r.handle (local/js/libs/jquery-1.11.1.min.js:3:5146) 

1 个答案:

答案 0 :(得分:1)

最重要的是(解决方案):

检查您的lib版本以确保它们是相同的

我使用的是angularjs 1.2.16angular-animate 1.2.10。 这导致angularjs调用它自己(它认为)$animate.setClass()

但是在angular-animate 1.2.10它不存在,因为我导入了animate,它会覆盖$animate,然后就没有方法可以调用。使用缩小版本时很难看到。

无论如何,感谢Kostia让我成为了plunker所以我能看到它正常运作。