AngularJS按属性排序

我想要做的是按属性排序一些数据。这是我应该努力的例子,但事实并非如此。


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 - > AData

B - > BData

C - > CData

......恕我直言应该是这样的:


C - > CData

B - > BData

A - > AData

我错过了什么(这里准备JSFiddle进行实验)?


宝慕林4294392
浏览 1161回答 3
3回答

倚天杖

这很简单,就这样做$scope.props = [{order:"1"},{order:"5"},{order:"2"}]ng-repeat="prop in props | orderBy:'order'"

幕布斯6054654

不要忘记parseInt()仅适用于Integer值。要对字符串值进行排序,您需要交换它:array.sort(function(a, b){&nbsp; a = parseInt(a[attribute]);&nbsp; b = parseInt(b[attribute]);&nbsp; return a - b;});有了这个:array.sort(function(a, b){&nbsp; var alc = a[attribute].toLowerCase(),&nbsp; &nbsp; &nbsp; blc = b[attribute].toLowerCase();&nbsp; return alc > blc ? 1 : alc < blc ? -1 : 0;});
打开App,查看更多内容
随时随地看视频慕课网APP