我想要做的是按属性排序一些数据。这是我应该努力的例子,但事实并非如此。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'"
幕布斯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;
});
添加回答
举报
0/150
提交
取消