26

我一直在尝试使用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', ... ];

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

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

4

2 回答 2

52

这是你需要做的:

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

Demo

于 2013-08-15T20:41:55.580 回答
3

正如文档所指定的,字符串参数用于对象属性,而不是原语。我认为,尽管听起来很初级,但您必须在范围内创建一个仅返回参数的函数,并将其传递给orderBy.

jsFiddle

于 2013-08-15T20:33:31.780 回答