2013-12-09 3 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-модели с этим решением: идентификатор выбранной опции хранится в объекте eval as 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

Смежные вопросы