我使用angularjs ng-repeat通过点击表格标题对我的记录进行排序,我找到了一个完美运作的例子,代码是这样的:
<th ng-repeat="header in headers">
<a ng-click="toggleSort($index)">{{ headers[$index] }}</a>
</th>
Here is a fiddle这个例子。
但是,我的问题是有&#34;的索引:&#34;在我的对象中,它会导致类似&#34; TypeError:无法读取属性&#39; col:A&#39;未定义&#34;
那么,我怎样才能使用&#34;:&#34; ?
答案 0 :(得分:1)
这是在OrderBy过滤器中使用特殊字符(如&#39;%&#39;)按键对对象进行排序时发生的错误。
您可以在此处找到有关此问题的更多详细信息:
https://github.com/angular/angular.js/issues/6143
似乎已在Angular 1.3.0-beta3中得到纠正。
解决方法是编写自己的比较函数并使用数组的sort() method。
我updated your fiddle让您了解比较功能以及如何使用它:
function compare(a,b,property) {
if (a[property] < b[property])
return -1;
if (a[property] > b[property])
return 1;
return 0;
}
答案 1 :(得分:0)
您应该更改调用数组中参数的方式:
$scope.headers = ['sortColumn', 'colB'];
$scope.records = [{sortColumn: 'a1', colB: 'd1'}, {sortColumn: 'c2', colB: 'b2'}, {sortColumn: 'b3', colB: 'c3'}, {sortColumn: 'd4', colB: 'a4'}];
$scope.sortColumn = 'colA';