Angularjs如何设置select的默认值

Angularjs如何设置select的默认值,angularjs,angularjs-ng-repeat,ng-options,angularjs-ng-options,Angularjs,Angularjs Ng Repeat,Ng Options,Angularjs Ng Options,我的目标如下: defaults = { 0 : { id : 10, value : "string 1" }, 1 : { id : 22, value : "string 2" } } 我想迭代这个对象并将其显示为一个选择框 <select ng-model="selectedValue" ng-options="obj.id as obj.value for obj in defaults"> <option va

我的目标如下:

defaults = {
0 : {
    id : 10,
    value : "string 1"
    },
1 : {
    id : 22,
    value : "string 2"
    }
}
我想迭代这个对象并将其显示为一个选择框

<select ng-model="selectedValue" ng-options="obj.id as obj.value for obj in defaults">
   <option value="">---Select option-----</option>
</select>
从我从文档中了解到,selectedValue必须是同一个对象。但不幸的是,这是不可能的。在我的例子中,selectedValue必须是字符串。 换句话说,我只需要使用选项的名称进行操作,我不关心id。 我试着用ng重复。它甚至可以工作,但显示一个空选项,我不认为使用ng repeat是一个好方法


任何建议都将不胜感激。

所选值应为id

 $scope.selectedValue = 22;

编辑:

更改模板

 <select ng-model="selectedValue" >
   <option value="">---Select option-----</option>
   <option ng-selected="selectedValue == obj.value" value="{{obj.value}}" ng-repeat="obj in defaults">{{obj.value}}</option>
 </select>

请参阅更新的

我认为您误解了文档

所选值应指同一对象的值,而不是对象本身

因此,可以将默认值设置为:

$scope.selectedValue = $scope.defaults[1].value;

这样,将设置默认值-无论值是字符串还是数字。

如果希望selectedValue变量包含值而不是ID,则不应将obj.ID用作obj.value,但是obj.value作为obj.value。

如果您将ng repeat与选项一起使用,则需要在选项标记的最后一次重复中使用。例如 选择name=repeatSelect id=repeatSelect ng model=usertypes.SelectedId

option ng repeat=usertypes.AvailableOptions值中的option={{option.Id}}ng selected=option.Id==上次重复时的usertypes.SelectedId>{{option.Name}


选择

请参见上面的我。selectedValue始终是字符串。api就是这样工作的,我没有能力修改它。它只返回所选选项的名称,例如字符串2和选项列表。默认值是对象或数组?默认值是对象。默认值是渲染选择框吗?是的,完全正确。我承认这可能很奇怪,api可能会在以后更改我对此没有反应,但现在它应该是这样工作的。如果您希望selectedValue包含值,而不是ID,那么您不应该使用obj.ID作为obj.value,而应该使用obj.value作为obj.value谢谢。正是我需要的。请重新发布您的评论作为回复。我将接受它。您想要所选选项的整个对象,还是只想要字符串值?请参阅我对上面答复的评论。我无法设置selectedValue。selectedValue始终是API返回的字符串。默认值是由ip返回的对象。因此,比较必须由值来完成,而不是由id来完成。@user3174320默认值不是这样工作的。您需要做的是,一旦API返回字符串,循环默认对象的属性,当值匹配时,将该属性值指定给selectedValue。不要将API返回的值直接附加到selectedValue
$scope.selectedValue = $scope.defaults[1].value;