orderBy - 按值排序对象

时间:2016-11-01 10:04:33

标签: angularjs

我有这个对象:

{
  "EG": "Egypt",
  "EH": "Western Sahara",
  "ER": "Eritrea",
  "ES": "Spain",
  "ET": "Ethiopia",
  "FI": "Finland"
}

我有这个ng-repeat:

<md-option ng-repeat="(code, country) in data.countries" value="{{code}}">{{country}}</md-option>

我想按国家名称排序,而不是按当前排序的代码排序。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

orderBy更好的对象,键和值数组。

尝试过滤器方式:

的javascript:

var app = angular.module('myapp',[]);

app.filter('orderObjectBy', function(){
 return function(input, attribute) {
    if (!angular.isObject(input)) return input;

    var array = [];
    for(var key in input) {
        array.push(input[key]);
    }

    array.sort(function(a, b){ 
        if(a < b) return -1;
        if(a > b) return 1;
        return 0;
    });
    return array;
 }
});

HTML:

<md-option ng-repeat="(code, country) in itemObjects | orderObjectBy:'country'" value="{{code}}">{{country}}</md-option>

code example

玩得开心。