Angularjs ng具有特殊字符“的重复排序表:&引用;在价值上

Angularjs ng具有特殊字符“的重复排序表:&引用;在价值上,angularjs,Angularjs,我使用angularjs ng repeat通过点击表格标题对我的记录进行排序,我发现了一个工作完美的示例,代码如下: <th ng-repeat="header in headers"> <a ng-click="toggleSort($index)">{{ headers[$index] }}</a> </th> 这是一个很好的例子 但是,我的问题是,在我的对象中有带“:”的索引,它会导致类似“TypeError:无法读取未定义的属

我使用angularjs ng repeat通过点击表格标题对我的记录进行排序,我发现了一个工作完美的示例,代码如下:

<th ng-repeat="header in headers">
    <a ng-click="toggleSort($index)">{{ headers[$index] }}</a>
</th>

这是一个很好的例子

但是,我的问题是,在我的对象中有带“:”的索引,它会导致类似“TypeError:无法读取未定义的属性'col:A'的错误”


那么,如何使其与“:”一起工作?

您应该更改在数组中调用参数的方式:

$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';

这是一个错误,当OrderBy筛选器中使用特殊字符(如“%”)按键对对象进行排序时,会发生此错误

您可以在此处找到有关此问题的更多详细信息:

它似乎已在角度1.3.0-beta3中进行了修正

解决方法是编写自己的比较函数并使用数组的

我要给你一个比较函数的概念,以及如何使用它:

function compare(a,b,property) {
  if (a[property] < b[property])
     return -1;
  if (a[property] > b[property])
    return 1;
  return 0;
}
函数比较(a、b、属性){
if(a[属性]b[属性])
返回1;
返回0;
}

两个链接中的内容看起来相同。