2014-10-28 59 views
1

我使用esvit“ngTable。显示一大堆数据。ngTable更新ngClass导致错误

但是当我尝试添加纳克级(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

这是什么意思'操纵'数据它意味着排序\过滤?我认为问题'答案隐藏在操作过程中))你可以提供plunk错误再现在时间 – 2014-10-28 09:27:05

+0

操纵,因为当我改变属性赢家'用户'(从'NG点击=“(toggleWinner(用户))”'。我会尝试,使后来普拉克重现 – 2014-10-28 09:54:12

+1

@KostiaMololkin谢谢,我想通了,由于plnkr :) – 2014-10-28 13:50:41

回答

1

最重要的第一个(解决方案):

检查库的版本,以确保它们是相同的

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

但在angular-animate 1.2.10它不在那里,因为我导入动画,它覆盖$animate然后没有方法被调用。使用缩小版本时很难看清楚。

不管怎么说,感谢科斯佳让我做plunker所以我可以看到它的作用。