AngularJS选择选项顺序

时间:2013-12-09 14:27:03

标签: angularjs

我正在尝试使用AngularJS获得选择下拉列表。问题依赖于选项的顺序:10在2之后,而不是在选项列表的末尾。我怎样才能把它放在应有的位置?

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来演示。

提前致谢。

2 个答案:

答案 0 :(得分:1)

正如Yoshi所说,您的数据结构并非最适合此类目的。 正如charlierfl所说,AngularJs使用数字作为默认的排序标准,所以你可以这样做:

$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>

答案 1 :(得分:0)

试试这个:

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