加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – Angular orderBy数字排序为ng-repeat中的文本

发布时间:2020-12-17 07:06:19 所属栏目:安全 来源:网络整理
导读:我有这些数据: [{"id":"42","firstname":"Sarah","lastname":"Dilby","age":"40","cars":"Yaris"},{"firstname":"Jason","lastname":"Diry","age":"5","id":"5"},{"id":"6","firstname":"Bilson","lastname":"Berby","age":"1","cars":"Tipo"}] 当我在ng-re
我有这些数据:

[{"id":"42","firstname":"Sarah","lastname":"Dilby","age":"40","cars":"Yaris"},{"firstname":"Jason","lastname":"Diry","age":"5","id":"5"},{"id":"6","firstname":"Bilson","lastname":"Berby","age":"1","cars":"Tipo"}]

当我在ng-repeat中按顺序id或年龄时,它会将数字排序为文本.由于我无法在任何地方发现这是一个问题,我猜我的代码存在问题.我创建了这个小提琴:http://jsfiddle.net/vsbGH/1/抱歉模板,但jsfiddle不允许在html框中.无论如何,这是加载和排序数据的代码:

//user data
app.service('People',function() {
var People = {};
People.details = [{"id":"42","cars":"Tipo"}]
return People;
});

//list ctrl
controllers.listCtrl = function ($scope,People) {
 $scope.people = People.details;

 $scope.sortList = function(sortname) {
    $scope.sorter = sortname;
 }
}

这是模板的ng-repeat部分:

<tr ng-repeat="person in people | orderBy:sorter ">
        <td>{{person.id | number}}</td>
        <td>{{person.firstname}} </td>
        <td>{{person.lastname}} </td>
        <td>{{person.age | number}}</td>
        <td>{{person.cars}} </td>
 </tr>

非常感谢,如果你能帮助我理解为什么数字数据不是作为数字排序,以及为什么它作为文本排序.

解决方法

我认为最合适的解决方案是正确格式化我在JSON对象上的数字,即不用引号括起来.所以:

[{"id":"42","cars":"Tipo"}]

变为:

[{"id":42,"age":40,"age":5,"id":5},{"id":6,"age":1,"cars":"Tipo"}]

我猜测如果不能纠正JSON数据的格式,SergL的解决方案是好的.

除此之外,我在特定情况下的问题是在服务器端使用PHP的json_encode函数.默认情况下,它将数字视为字符串.要解决此问题,我必须将JSON_NUMERIC_CHECK选项添加到PHP脚本中的encode方法:

json_encode($assoc_array,JSON_NUMERIC_CHECK);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读