2014-06-05 28 views
3

排序我寫這篇文章的代碼:角NG選項是通過按鍵

<select required="required" ng-model="category" ng-init="category=''" ng-options="k as v for (k,v) in filter.category"></select> 

$scope.filter.region = { 
      '': 'Все территории', 
      '1': 'РО', 
      '2': 'Ростов-на-Дону', 
      '3': 'Левенцовский', 
      '4': 'Ворошиловский', 
      '5': 'Железнодорожный', 
      '6': 'Кировский', 
      '7': 'Ленинский', 
      '8': 'Октябрьский', 
      '9': 'Первомайский', 
      '10': 'Пролетарский', 
      '11': 'Советский' 
     }; 

但通過角關鍵字排序是:

<option value="" selected="selected">Все территории</option> 
     <option value="1">РО</option> 
     <option value="10">Пролетарский</option> 
     <option value="11">Советский</option> 
     <option value="2">Ростов-на-Дону</option> 
     <option value="3">Левенцовский</option> 
     <option value="4">Ворошиловский</option> 
     <option value="5">Железнодорожный</option> 
     <option value="6">Кировский</option> 
     <option value="7">Ленинский</option> 
     <option value="8">Октябрьский</option> 
     <option value="9">Первомайский</option> 

我該如何解決呢? PS:我必須使用ng-options的簽名,因爲我的值可以是符號。

+0

你可以用它代替用哈希一個普通數組你自己的鑰匙?像這樣:'$ scope.filter.region = ['Всетерритории','РО',...]' – awendt

+0

不,我不能。因爲我的選擇的價值可以是象徵性的,或開始不是1. – user3599334

+0

看看這個 http://stackoverflow.com/questions/23988217/arrays-in-angular-js/23989118#23989118 – guru

回答

1

角值視爲字符串,所以11是2,你可以前的是:

$scope.filter.region = { 
      '': 'Все территории', 
      '01': 'РО', 
      '02': 'Ростов-на-Дону', 
      '03': 'Левенцовский', 
      '04': 'Ворошиловский', 
      '05': 'Железнодорожный', 
      '06': 'Кировский', 
      '07': 'Ленинский', 
      '08': 'Октябрьский', 
      '09': 'Первомайский', 
      '10': 'Пролетарский', 
      '11': 'Советский' 
     }; 
2

您可以添加orderBy

<select required="required" ng-model="category" ng-init="category=''" ng-options="k as v for (k,v) in filter.category | orderBy:'k'"></select>