orderBy数字角js

时间:2014-06-13 19:48:40

标签: angularjs sql-order-by angularjs-ng-repeat parsefloat

我有一系列对象......

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

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

谢谢!

6 个答案:

答案 0 :(得分:9)

尝试将-age包装在单引号中,例如'-age'

答案 1 :(得分:6)

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

使用过滤器以纯角度制作:

| ORDERBY:&#39; -1 *年龄&#39;`

答案 2 :(得分:5)

以下将转换&#39;年龄&#39;进入数字并按升序排序。

| orderBy : 'age/1'

答案 3 :(得分:1)

试试这个家伙......

ng-repeat =“userObjects中的用户| orderBy:'age'”&gt;

答案 4 :(得分:0)

升序: -

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

降序: -

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

答案 5 :(得分: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>