AngularJS orderBy通过函数

时间:2013-12-14 07:23:07

标签: javascript angularjs

尝试通过函数orderBy时,以下两个片段之间有什么区别:

<li ng-repeat="str in arrOfStrings | orderBy: 'toString()'> {{str}} </li>

<li ng-repeat="person in people | orderBy: getSortKey()> {{person.firstName}} {{person.lastName}}: {{person.email}} </li>
$scope.getSortKey = function() {
    return "lastName";
}

另外我想知道toString()方法如何帮助排序字符串数组。 见How to make orderby filter work on array of strings?

1 个答案:

答案 0 :(得分:4)

在第一种情况下,你说要使用数组中元素的属性或方法

在第二种情况下,你说要使用来自全局(实际上是当前)范围的方法或属性,它应返回将应用于数组元素的内容,即它将首先执行,这就是为什么你的第二个例子可以简化为

 <li ng-repeat="person in people | orderBy: 'lastName'>

第二种情况的典型使用示例将在表格中排序。你可以这样:

 <table>
   <tr><td ng-click='sortColumn="a"'>a<td><td ng-click='sortColumn="b"'></td>
   </tr>
   <tr ng-repeat="e in elements | orderBy: sortColumn"><td>{{ a }}</td><td>{{ b }}</td></tr>
 </table>

更确切地说 - orderBy接受字符串作为参数或返回字符串的函数。 String应该是数组元素的属性名称或方法调用。