ng-repeat orderBy,带有两位数字

时间:2017-11-27 23:52:39

标签: angularjs angularjs-ng-repeat angularjs-orderby

我的名字如下:

Name - Page 9
Name - Page 2
Name - Page 6
Name - Page 15
Name - Page 1
Name - Page 12
Name - Page 14
Name - Page 13
Name - Page 10
Name - Page 11

目前我在做:

<div ng-repeat="data in results | orderBy:'-name'">
{{ data.name }}
</div>

但它没有考虑到数字的顺序。

有谁知道如何确保根据数字订购?

1 个答案:

答案 0 :(得分:0)

它应该按预期工作。检查我创建的这个plunker。 Plunker Code

编辑:要处理两位数,您可以编写自定义排序函数,如下所示:

 $scope.myValueFunction = function(value) {
  var numpart = value.name.replace( /^\D+/g, '');
  return -(numpart-1000);
}

这样做是提取数字部分并使其成为可排序的数字。您可以删除前面的-ve符号以获得升序。

然后在你的html中,你可以像这样调用这个函数:

<tr ng-repeat="friend in friends | orderBy:myValueFunction">
  <td>{{friend.name}}</td>
  <td>{{friend.phone}}</td>
  <td>{{friend.age}}</td>
</tr>