我有一个由Angular中的键/值对象填充的选择。
$scope.event_types = {
"CASE_STATE_CHANGE": "Case state change",
"NEW_ISSUE": "New Issue",
"CASE_REVERT": "Case Revert".......}
等
但是,当我执行订单时,它不起作用。
<select
class="form-control"
name="chase2"
id="chase2"
ng-model="eventTypeFilter"
ng-change="updateEventFilterInput(eventTypeFilter)"
ng-options="key as value for (key , value) in event_types | orderBy:'value'">
这种阵列有可能吗?
答案 0 :(得分:1)
您无法对对象进行排序。在大多数系统上,它将按字母顺序排序。如果你想控制元素的呈现顺序,你应该使用数组来保证排序。
您可以执行以下操作:
var events_array = Object.keys(event_types)
.map(function (key) { return {key: key, value: event_types[key]} })
.sort(function(a,b) { return a.key < b.key; } );
然后在ng-options上使用events_array,如:
<select ng-model="eventTypeFilter"
ng-options="event.key as event.value for event in events_array"></select>
这是jsfiddle(需要打开控制台查看输出)
PS:您应该考虑对控制器上的值进行排序,然后分配给视图,因为它比在视图上排序更有效