AngularJS orderBy通过函数

AngularJS orderBy via function

本文关键字:函数 orderBy AngularJS      更新时间:2023-09-26

当尝试通过函数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()方法在排序字符串数组时有什么帮助。请参阅如何使orderby筛选器对字符串数组有效?

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

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

 <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接受字符串作为参数或返回字符串的函数。字符串应该是数组元素上的属性或方法调用的名称。