有人可以帮忙解释为什么第一个和最后一个选择不显示默认值吗?
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>
答案 0 :(得分:0)
从ngOptions
documentation页面解释:
在这两个示例中,
track by
表达式已成功应用于option
数组中的每个options
。 由于已在控制器中以编程方式设置所选选项,因此track by
表达式也会应用于ngModel
值。当ngModel
值为{{1时并且options[0]
表达式求值为track by
没有问题。当options[0].id
值为ngModel
且options[0].label
表达式求值为track by
(未定义)时。因此,模型值与任何options[0].label.id
都不匹配,<option>
显示为没有选定值。