具有特殊字符的Angularjs ng-repeat排序表":"价值

时间:2014-04-13 09:04:20

标签: angularjs

我使用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;

Here is a demo with ":"

那么,我怎样才能使用&#34;:&#34; ?

2 个答案:

答案 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';

Fiddle