选择不使用布尔值的默认选项

时间:2016-02-22 11:54:18

标签: javascript html angularjs

有人可以帮忙解释为什么第一个和最后一个选择不显示默认值吗?

angular.module('myApp', []);
angular.bootstrap(document.documentElement, ['myApp']);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular.min.js"></script>

<div ng-init="options=[{id: false, label: 'False'}, {id: true, label: 'True'}]"></div>

<select ng-init="myVar=false" ng-model="myVar" >
  <option ng-value="false">False</option>
  <option ng-value="true">True</option>
</select>

<select ng-init="myVar2=false" ng-model="myVar2" ng-options="option.id as option.label for option in options">
</select>

<select ng-init="myVar3=false" ng-model="myVar3" ng-options="option.id as option.label for option in options track by option.id">
</select>

1 个答案:

答案 0 :(得分:0)

ngOptions documentation页面解释:

  

在这两个示例中,track by表达式已成功应用于option数组中的每个options由于已在控制器中以编程方式设置所选选项,因此track by表达式也会应用于ngModel值。ngModel值为{{1时并且options[0]表达式求值为track by没有问题。当options[0].id值为ngModeloptions[0].label表达式求值为track by(未定义)时。因此,模型值与任何options[0].label.id都不匹配,<option>显示为没有选定值。