使用 ng-options 生成下拉列表时,如何设置所选选项?

While generating dropdownlist with ng-options, how to set the selected option?

这是插件demo

script.js 中,我创建了一个变量 info 来存储选项。所选选项应为 "Spanish" 因为

 {
     "name": "Spanish", 
     "value": 3082, 
     "selected": true //It's true here.
 }

如何解决这个问题?

在您原来的 plunkr 中,您使用了 HTML 中的数据,而范围中的变量称为信息。使用 ng-repeat 而不是 ng-options 我让它像这样工作:

<div ng-controller="MyCntrl">
  <select >
    <option ng-repeat="option in info.value.lang" selected="option.selected">{{ option.name }}</option>
  </select>
</div>

http://plnkr.co/edit/jp8g65LDtft1ZVvJe8nz

如果我正确解释了你的问题,这也能得到你想要的结果。

编辑:哦,顺便说一句,选择应该选择='selected'而不是布尔值。

您需要添加 ng-model。根据您的 info.value.lang,您可以将 selected : true 设置为模型值。

function MyCntrl($scope) {
    $scope.info = info;
    $scope.selectedItem = null;

    angular.forEach(info.value.lang, function(lang) {
      if (lang.selected === true){
        $scope.selectedItem = lang.value;
      }
    });
}

<div ng-controller="MyCntrl">
  <select ng-model="selectedItem" ng-options="option.value as option.name for option in info.value.lang" >
  </select>
</div>

演示:http://plnkr.co/edit/RMr19uwuOH3EEjMd7cRL

您在 js 和 html 中使用了不同的变量名。 ngOptions 需要有一个模型。要将西班牙语设置为默认设置,您必须执行以下操作。

<body>
<div ng-controller="MyCntrl">
  <select ng-model="someModel" ng-init="someModel=3082" ng-options="option.value as option.name for option in info.value.lang">
  </select>
</div>
</body>

此处 someModel 将具有从选项中选择的值。

您需要添加 ng-model 检查此 link 它现在正在工作.. plunker