为了账号安全,请及时绑定邮箱和手机立即绑定

AngularJS按属性排序

AngularJS按属性排序

宝慕林4294392 2019-08-30 17:01:14
我想要做的是按属性排序一些数据。这是我应该努力的例子,但事实并非如此。HTML部分:<div ng-app='myApp'>    <div ng-controller="controller">    <ul>        <li ng-repeat="(key, value) in testData | orderBy:'value.order'">            {{value.order}}. {{key}} -> {{value.name}}        </li>    </ul>    </div></div>JS部分:var myApp = angular.module('myApp', []);myApp.controller('controller', ['$scope', function ($scope) {    $scope.testData = {        C: {name:"CData", order: 1},        B: {name:"BData", order: 2},        A: {name:"AData", order: 3},    }}]);结果如下:A - > ADataB - > BDataC - > CData......恕我直言应该是这样的:C - > CDataB - > BDataA - > AData我错过了什么(这里准备JSFiddle进行实验)?
查看完整描述

3 回答

?
倚天杖

TA贡献1828条经验 获得超3个赞

这很简单,就这样做


$scope.props = [{order:"1"},{order:"5"},{order:"2"}]


ng-repeat="prop in props | orderBy:'order'"


查看完整回答
反对 回复 2019-08-30
?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

不要忘记parseInt()仅适用于Integer值。要对字符串值进行排序,您需要交换它:


array.sort(function(a, b){

  a = parseInt(a[attribute]);

  b = parseInt(b[attribute]);

  return a - b;

});

有了这个:


array.sort(function(a, b){

  var alc = a[attribute].toLowerCase(),

      blc = b[attribute].toLowerCase();

  return alc > blc ? 1 : alc < blc ? -1 : 0;

});


查看完整回答
反对 回复 2019-08-30
  • 3 回答
  • 0 关注
  • 1119 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信