我已经为国家创建了一个角度选择框。我的数组看起来像这样:
广告:“安道尔共和国”
AE:“阿拉伯联合酋长国”
AF:“阿富汗”
AG:“安提瓜和巴布达”
AI:"Anguilla“
我的NgRepeater看起来像这样
<li nya-bs-option="(k, v) in fields.country.available" data-value="v" data-label="{{v}}">如你所见,“Key”会自动按字母顺序排列。但是,我希望“Value”按字母顺序排列。我试过了:
<li nya-bs-option="(k, v) in fields.country.available | orderBy:'v'" data-value="v" data-label="{{v}}">但这并不管用。有人能帮上忙吗?
发布于 2015-11-23 05:24:30
我从<key>:<value>结构中可以看出,您的数组更像是一个对象。在这种情况下,您需要为orderBy编写自己的筛选器,因为angular不能使用此筛选器对对象键进行排序。
另请参阅:Order by Object key in ng-repeat
尽管采用了上面的解决方案,但如果可能的话,我建议对这些国家使用另一种结构:
[{id: 'AD', name: 'Andorra'}, ...]然后,您可以在ng-repeat中执行此操作
country in fields.country.available | orderBy: 'id'发布于 2015-11-24 02:38:42
我已经解决了。通过这种方式,国家/地区会自动按字母顺序排列:)
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;https://stackoverflow.com/questions/33860099
复制相似问题