我正试图让选择框从使用Ang-repeat和AngularJS 1.1.5的预填充选项开始.相反,选择始终从未选择任何内容开始.它也有一个空选项,我不想要.我认为没有被选中的副作用.
我可以使用ng-options而不是ng-repeat来使用它,但我想在这种情况下使用ng-repeat.虽然我的缩小示例没有显示,但我也想设置每个选项的title属性,据我所知,使用ng-options无法做到这一点.
我不认为这与常见的AngularJs范围/原型继承问题有关.至少我在Batarang检查时没有看到任何明显的东西.此外,当您使用UI选择选项中的选项时,模型会更新正确.
这是HTML:
<body ng-app ng-controller="AppCtrl">
<div>
Operator is: {{filterCondition.operator}}
</div>
<select ng-model="filterCondition.operator">
<option
ng-repeat="operator in operators"
value="{{operator.value}}"
>
{{operator.displayName}}
</option>
</select>
</body>
Run Code Online (Sandbox Code Playgroud)
和JavaScript:
function AppCtrl($scope) {
$scope.filterCondition={
operator: 'eq'
}
$scope.operators = [
{value: 'eq', displayName: 'equals'},
{value: 'neq', displayName: 'not equal'}
]
}
Run Code Online (Sandbox Code Playgroud)
<select ng-model="team.captain" ng-options="player.name for player in team.players"></select>
Run Code Online (Sandbox Code Playgroud)
这会正确创建选择列表以选择团队队长.但是,默认情况下会选择空白选项.我们如何从列表中预选第一个玩家呢?
<select ng-model="team.captain" ng-options="player.name for player in team.players" class="ng-pristine ng-valid">
<option value="0">John</option>
<option value="1">Bobby</option>
</select>
Run Code Online (Sandbox Code Playgroud)
我尝试添加,ng-init="team.captain='0'"但没有帮助.
更新显然这是因为
传递给ng-options的一组选项中不存在ng-model引用的值.
来源:为什么AngularJS在select中包含一个空选项?
但是,问题仍然存在,为什么使用ng-init不起作用?
<select ng-init="team.captain='0'" ng-model="team.captain" ng-options="player.name for player in team.players"></select>
Run Code Online (Sandbox Code Playgroud)