我正在使用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)
答案 0 :(得分:1)
最重要的是(解决方案):
检查您的lib版本以确保它们是相同的
我使用的是angularjs 1.2.16
和angular-animate 1.2.10
。
这导致angularjs调用它自己(它认为)$animate.setClass()
。
但是在angular-animate 1.2.10
它不存在,因为我导入了animate,它会覆盖$animate
,然后就没有方法可以调用。使用缩小版本时很难看到。
无论如何,感谢Kostia让我成为了plunker所以我能看到它正常运作。