2013-12-09 137 views
0

我正在嘗試使用AngularJS獲得選擇下拉菜單。問題在於選項的順序:10在2之後,而不是在選項列表的末尾。我怎樣才能設法把它放在應該的地方?AngularJS選擇選項順序

HTML

<div ng-app> 
    <div ng-controller="TestCtrl"> 
     <select ng-model="val" ng-options="k as v for (k,v) in notes"> 
     </select> 
</div> 

JS

function TestCtrl($scope) { 
    $scope.notes = { 
    '0': 'Non applicable', 
    '1': '1 -Très Mauvais', 
    '2': '2 -Mauvais', 
    '3': '3 -Insuffisant', 
    '4': '4 -Mediocre', 
    '5': '5 -Moyen', 
    '6': '6 -Correct', 
    '7': '7 -Bon', 
    '8': '8 -Très bon', 
    '9': '9 -Excellent', 
    '10': '10 -Parfait' 
    }; 
} 

這裏是一個fiddle證明。

在此先感謝。

+1

爲您的數據,數組似乎更爲合適。甚至更好,一組對象。 – Yoshi

+1

同意。一個數組也保留'ngOptions'中的正確順序(參見[這裏](http://jsfiddle.net/AnUn6/))。 – Mouagip

回答

1

正如耀西說,你的數據結構是不是最適合這樣的目的。 正如charlierfl說,AngularJs使用數字作爲默認的排序critieria,所以你可以這樣做:

$scope.notes = [ 
    {'value': 0, 'remarque': 'Non applicable'}, 
    {'value': 1, 'remarque': '1 -Très Mauvais'}, 
    {'value': 2, 'remarque': '2 -Mauvais'}, 
    {'value': 3, 'remarque': '3 -Insuffisant'}, 
    {'value': 4, 'remarque': '4 -Mediocre'}, 
    {'value': 5, 'remarque': '5 -Moyen'}, 
    {'value': 6, 'remarque': '6 -Correct'}, 
    {'value': 7, 'remarque': '7 -Bon'}, 
    {'value': 8, 'remarque': '8 -Très bon'}, 
    {'value': 9, 'remarque': '9 -Excellent'}, 
    {'value': 10, 'remarque': '10 -Parfait'} 
]; 

而在你的HTML:

<select ng-model="val" ng-options="note.value as note.remarque for note in notes"> 
    </select> 
+0

謝謝,這工作,但我有麻煩使用ng-model與此解決方案:所選選項的ID包含在一個對象eval爲eval.noteID。所以我有:'ng-model =「eval.noteID」。這不工作了,我無法找到一個正確的綁定。 – 11OClock

0

試試這個:

ng-options="k as v for (k,v) in notes | orderBy:['k']" 
+0

這不會改變任何東西:[小提琴](http://jsfiddle.net/Z6ZBf/)。 – 11OClock

+0

仍然比較字符串,而不是數字...這是相同的角度已經使用作爲默認 – charlietfl