AngularJS ngOptions排序数组

时间:2013-08-15 20:10:41

标签: angularjs ng-options

我一直在尝试使用ng-options来显示一个字体数组,这些字体按字母顺序排列,按照数组中项目的值排序。

HTML

<select ng-options="font for font in webfonts | orderBy:'font'" name="fonts">
     <option value="">Choose a font</option>
</select>

JS

$scope.webfonts = [ 
        'Abel', 'Crafty Girls' , 'Lato' , 'Average',
        'Corben', 'Quicksand', ... ];

我尝试更改orderBy和其他内容的值。我已经阅读了documentation和所有评论。

我错过了什么?这应该只适用于对象吗?

2 个答案:

答案 0 :(得分:49)

这是你需要做的:

<select ng-model="selected" ng-options="font for font in webfonts | orderBy:'toString()' " name="fonts">
  1. 您需要添加ng-model以正确使绑定适用于字符串列表。
  2. 如果输入包含字符串列表,您可以使用toString()进行排序。由于orderBy的表达式可以是Getter函数。该函数的结果将使用&lt;,=,&gt;进行排序。操作者。
  3. Demo

答案 1 :(得分:3)

正如文档所指定的那样,字符串参数用于对象属性,而不是用于基元。我认为,就像它听起来那么基本,你必须在范围上创建一个简单地返回参数的函数,并将其传递给orderBy

请参阅jsFiddle