首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angular Country sortBy

Angular Country sortBy
EN

Stack Overflow用户
提问于 2015-11-23 04:57:28
回答 2查看 490关注 0票数 1

我已经为国家创建了一个角度选择框。我的数组看起来像这样:

广告:“安道尔共和国”

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

AF:“阿富汗”

AG:“安提瓜和巴布达”

AI:"Anguilla“

我的NgRepeater看起来像这样

代码语言:javascript
复制
<li nya-bs-option="(k, v) in fields.country.available" data-value="v" data-label="{{v}}">

如你所见,“Key”会自动按字母顺序排列。但是,我希望“Value”按字母顺序排列。我试过了:

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

但这并不管用。有人能帮上忙吗?

EN

回答 2

Stack Overflow用户

发布于 2015-11-23 05:24:30

我从<key>:<value>结构中可以看出,您的数组更像是一个对象。在这种情况下,您需要为orderBy编写自己的筛选器,因为angular不能使用此筛选器对对象键进行排序。

另请参阅:Order by Object key in ng-repeat

尽管采用了上面的解决方案,但如果可能的话,我建议对这些国家使用另一种结构:

代码语言:javascript
复制
[{id: 'AD', name: 'Andorra'}, ...]

然后,您可以在ng-repeat中执行此操作

代码语言:javascript
复制
country in fields.country.available | orderBy: 'id'
票数 0
EN

Stack Overflow用户

发布于 2015-11-24 02:38:42

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

HTML:

代码语言:javascript
复制
<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>

控制器:

代码语言:javascript
复制
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;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33860099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档