AngularJS无法按顺序显示月份下拉列表

时间:2013-03-22 21:44:49

标签: javascript sorting angularjs

我似乎无法正常显示月份,10月总是在1月之后,因为它的值为10 ...我假设某种排序中的某种方式小于2.这是代码的小提琴:

http://jsfiddle.net/naZQA/

<select ng-model="month" ng-options="key as value for (key,value) in months"></select>

我遇到了同样的问题,我无法将美国作为第二个条目出现,因为它会自行疯狂排序。

任何帮助表示感谢。

3 个答案:

答案 0 :(得分:6)

对对象使用ng-options只是迭代不保证按任何顺序排列的对象属性。如果您可以将其更改为数组,则保证它们按指定的顺序排列。 Updated fiddle。然后选择如下:

<select ng-model="month" ng-options="currMonth for currMonth in months"></select>

如果您需要为ng-model保留相同的值,您还可以拥有一组键/值对。见this fiddle 然后选择如下:

<select ng-model="month" ng-options="currMonth.key as currMonth.value for currMonth in months"></select>

答案 1 :(得分:1)

在这个问题here中对此进行了讨论。因此,角度不允许使用简单哈希值orderBy,您无法在不重组数据的情况下继续排序。 这里有一个改变了数据结构的小提琴fiddle

更新:更新了小提琴链接

答案 2 :(得分:1)

在AngularJS选择文档中尝试此解决方法I commented 使用months.indexOf(m)作为选择值。

<select ng-model="monthIndex" ng-options="months.indexOf(m) as m for m in months"></select>

通过这种方式,您可以使用简单的字符串数组作为源,并使用所选索引更新ng-model 在这里试试:jsbin