5

我有一个对象数组...

var userObjects =[
{userName: bob,
 age: "25",
 gender: "m"
},
{userName: bill,
 age: "15",
 gender: "m"
},
{userName: jen,
 age: "45",
 gender: "f"
},
]

现在我的 HTML 中有一个 ng-repeat 来迭代这个对象数组。我希望它对年龄进行排序:

<tr ng-repeat="user in userObjects | orderBy:-age">

在我的 JS 中,我将我的年龄转换为整数....

data.forEach(function(user){
   user.age= parseFloat(user.age);
}

Angular 不会按年龄排序,我希望看到...

bill, 15
bob, 25
jen, 45

但相反,它们到处都是。我究竟做错了什么?

谢谢!

4

6 回答 6

9

尝试-age用单引号括起来,比如'-age'

于 2014-06-13T19:55:08.340 回答
7

不需要在 JS 中将字符串转换为数字。

使用过滤器在纯 Angular 中制作:

| orderBy:'-1*age'`

于 2016-05-16T14:06:16.837 回答
5

以下会将“年龄”转换为数字并按升序排序。

| orderBy : 'age/1'

于 2017-03-29T18:43:39.940 回答
1

试试这哥们。。。。。。

ng-repeat="userObjects 中的用户 | orderBy:'age'">

于 2014-06-16T11:13:26.197 回答
0

升序:-

<div ng-repeat="person in persons | orderBy:'age'">

降序:-

<div ng-repeat="person in persons | orderBy:'-age'">
于 2016-03-25T10:43:45.997 回答
0

angular.module('myApp', []).controller('namesCtrl', function($scope) {
    $scope.names = [
        {name:'Jani',age:'18'},
        {name:'Carl',age:'32'},
        {name:'Margareth',age:'21'},
        {name:'Hege',age:'14'},
        {name:'Joe',age:'36'},
        {name:'Gustav',age:'42'},
        {name:'Birgit',age:'28'},
        {name:'Mary',age:'58'},
        {name:'Kai',age:'26'}
        ];
});
<!DOCTYPE html>
<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
<body>

<div ng-app="myApp" ng-controller="namesCtrl">

<p>Looping with objects:</p>
<ul>
  <li ng-repeat="x in names | orderBy:'age'">
    {{ x.name + '-' + x.age }}
  </li>
</ul>

</div>

</body>
</html>

于 2017-07-27T11:45:10.520 回答