我已经搜索了谷歌,在这个上面什么也找不到。
我有这个代码。
<select ng-model="somethingHere"
ng-options="option.value as option.name for option in options"
></select>
有这样的数据
options = [{
name: 'Something Cool',
value: 'something-cool-value'
}, {
name: 'Something Else',
value: 'something-else-value'
}];
输出是这样的。
<select ng-model="somethingHere"
ng-options="option.value as option.name for option in options"
class="ng-pristine ng-valid">
<option value="?" selected="selected"></option>
<option value="0">Something Cool</option>
<option value="1">Something Else</option>
</select>
如何将数据中的第一个选项设置为默认值,从而得到这样的结果呢?
<select ng-model="somethingHere" ....>
<option value="0" selected="selected">Something Cool</option>
<option value="1">Something Else</option>
</select>
在我的情况下,因为默认情况下不同的情况下,在形式。
我在选择标记中添加了一个自定义属性。
<select setSeletected="{{data.value}}">
<option value="value1"> value1....
<option value="value2"> value2....
......
在指令中,我创建了一个检查值的脚本,当angular填充它时,将该值设置为选中的选项。
.directive('setSelected', function(){
restrict: 'A',
link: (scope, element, attrs){
function setSel=(){
//test if the value is defined if not try again if so run the command
if (typeof attrs.setSelected=='undefined'){
window.setTimeout( function(){setSel()},300)
}else{
element.find('[value="'+attrs.setSelected+'"]').prop('selected',true);
}
}
}
setSel()
})
刚刚从coffescript中翻译了这个,如果不是洞的东西,至少它的jist是正确的。
这不是最简单的方法,但当值变化时就能完成
试试这个:
HTML
<select
ng-model="selectedOption"
ng-options="option.name for option in options">
</select>
Javascript
function Ctrl($scope) {
$scope.options = [
{
name: 'Something Cool',
value: 'something-cool-value'
},
{
name: 'Something Else',
value: 'something-else-value'
}
];
$scope.selectedOption = $scope.options[0];
}
砰砰作响。
如果您真的想设置将绑定到模型的值,那么将ng-options属性更改为
ng-options="option.value as option.name for option in options"
和Javascript
...
$scope.selectedOption = $scope.options[0].value;
考虑到上述情况,这里又一个普伦克。
接受的答案使用ng-init,但是文档说如果可能的话避免ng-init。
ngInit唯一合适的用法是对特殊属性进行混叠
ngRepeat,如下图所示。除了这个案子,你应该
使用控制器而不是ngInit来初始化作用域上的值。
你也可以使用ng-repeat来代替ng-options。使用ng-repeat,您可以使用ng-selected和ng-repeat的特殊属性。例如,$index, $odd, $even使其无需任何编码即可工作。
$first是ng-repeat的一个特殊属性。
<select ng-model="foo">
<option ng-selected="$first" ng-repeat="(id,value) in myOptions" value="{{id}}">
{{value}}
</option>
</select>
----------------------编辑----------------
虽然这是可行的,但我更喜欢@mik-t的答案,当您知道要选择什么值时,https://stackoverflow.com/a/29564802/454252,它使用track-by和ng-options,而不使用ng-init或ng-repeat。
这个答案只适用于当你必须选择第一项而不知道选择什么值时。例如,我正在使用这个自动完成,它需要一直选择第一个项目。