1

我为国家/地区创建了一个角度选择框。我的数组如下所示:

广告:“安道尔”

AE:“阿拉伯联合酋长国”

AF:“阿富汗”

AG:“安提瓜和巴布达”

AI:“安圭拉”

我的 NgRepeater 看起来像这样

<li nya-bs-option="(k, v) in fields.country.available" data-value="v" data-label="{{v}}">

如您所见,“钥匙”会自动按字母顺序排列。但是我希望“价值”按字母顺序排列。我努力了:

<li nya-bs-option="(k, v) in fields.country.available | orderBy:'v'" data-value="v" data-label="{{v}}">

但这没有用。任何人都可以帮忙吗?

4

2 回答 2

0

我已经解决了。通过这种方式,国家会自动按字母顺序排列:)

HTML:

<ol class="nya-bs-select" ng-model="data.ship.country" name="ship_{{fields.country.slug}}">
    <li nya-bs-option="v in sortable" data-value="v[0]">
        <a>{{v[1]}}</a>
    </li>
</ol>

控制器:

var countries = fields.country.available,
    sortable = [];

for (var country in countries){
  sortable.push([country, countries[country]]);
}       
sortable.sort(function(a, b) {
  return a[1] - b[1]
});

$scope.sortable = sortable;
于 2015-11-23T18:38:42.397 回答
0

<key>:<value>就我从结构中看到的而言,您的数组似乎更像一个对象。在这种情况下,您需要编写自己的过滤器,orderBy因为 Angular 无法使用此过滤器对对象键进行排序。

另请参阅:在 ng-repeat 中按对象键排序

尽管上述线程中有解决方案,但如果可能,我建议对国家/地区使用另一种结构:

[{id: 'AD', name: 'Andorra'}, ...]

然后你可以这样做ng-repeat

country in fields.country.available | orderBy: 'id'
于 2015-11-22T21:24:29.853 回答