[英]Angular OrderBy index not functioning
我在指令上设置默认的orderby。 在某些点击事件中,我会根据被单击的列更改顺序。 但是,当我尝试通过索引设置默认顺序时,会得到一些非常奇怪的结果。
我已经基于Angular文档创建了一个Plunker。 我的目标是使默认的orderBy(仅显示此处的代码)不进行排序,以便以后可以更改orderBy属性。
Plunker: 下面的Plunker或HTML
<div ng-controller="ExampleController">
<table class="friend">
<tr>
<th>Name</th>
<th>Phone Number</th>
<th>index</th>
</tr>
<tr ng-repeat="friend in friends | orderBy:'index'">
<td>{{friend.name}}</td>
<td>{{friend.phone}}</td>
<td>{{friends.indexOf(friend)}}</td>
</tr>
</table>
</div>
新柱塞 。 似乎这是从Angular 1.2到1.3的更改,我在不同版本的angular上测试了工作代码,在1.2中可以传递空顺序,并且将按索引顺序进行排序,但是在1.3和1.4中,排序方式不同
您根本不需要任何排序,数组已经按照您想要的顺序排列了。 假设您有一个变量$scope.orderByField
定义要用于订购的属性,您可以执行以下操作:
<tr ng-repeat="friend in (orderByField ? (friends | orderBy : orderByField) : friends)">
因此,仅在确实需要orderBy过滤器时,才使用它。
柱塞 : http : //plnkr.co/edit/kXOSF4adOohDDxLEtnGT?p=preview
通过Appart,您还可以定义一个自定义比较器方法并使用它:
$scope.sortByIndex = function(a, b) {
return $scope.friends.indexOf(a) - $scope.friends.indexOf(b)
}
<tr ng-repeat="friend in friends | orderBy : sortByIndex">
但是我真的不建议您使用它,因为您将进行不必要的计算。
我一直通过对列表进行预排序来解决此问题。
然后,我的职能部门完成了以前依靠Angular为我做的所有工作。
作为一个供参考的人,我还将此错误作为错误提交给了angularJS团队。 他们报告说它将在下一个版本中修复( https://github.com/angular/angular.js/issues/12100 )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.