ngOptions排序和选择数组中的对象

时间:2013-05-30 19:16:01

标签: arrays drop-down-menu angularjs ng-options

我的控制器中有一组选项如下:

$scope.options = [
    {one: 'ONE'},
    {two: 'TWO'},
    {three: 'THREE'}
];

我的观点看起来如下所示:

<div ng-repeat="goal in objectives">
   ...
  <select ng-model="goal.choices" ng-options="value for (key, value) in options">  </select>
   ...
</div>

问题:结果下拉列表不是按照数组中的obj出现而是按每个对象键的alpha进行排序,并且没有选择默认选项,我希望下拉列表默认为“一”不是''

什么是ng-options表达式需要使其工作?????

由于

1 个答案:

答案 0 :(得分:1)

您的$scope.options数组在ngOptions中不可用,因为您有一个包含三个完全不同的对象的数组(一个具有one属性,另一个具有two属性,最后一个three属性)。如果您希望select默认为$scope.choices[0],则goal.choices需要设置为$scope.options[0]

我必须在这里做一些猜测,因为你没有包含$scope.objectives的内容,但我可以想象你会选择这样的东西:

http://jsfiddle.net/A5KkM/

HTML

<div ng-app ng-controller="x">
    <div ng-repeat="goal in objectives">{{goal.choice}}
        <select ng-model="goal.choice" ng-options="o.name for o in options"></select>
    </div>
</div>

的JavaScript

function x($scope) {
    $scope.options = [{
        name: 'ONE'
    }, {
        name: 'TWO'
    }, {
        name: 'THREE'
    }];

    $scope.objectives = [{ choice: $scope.options[0] }, { choice: $scope.options[1] }];
}