我有以下对象:
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>
我想要实现的是选择字符串2&#39;默认情况下。但它不起作用。 我遇到的问题是selectedValue是一个字符串:
$scope.selectedValue = "string 2";
根据我从文档中学到的知识,selectedValue必须是同一个对象。但不幸的是,这是不可能的。在我的情况下,selectedValue必须是一个字符串。 换句话说,我只需要使用选项的名称,我不关心id。 我试着用ng-repeat。它甚至可以工作,但显示一个空的选项,我不认为使用ng-repeat是一个很好的方法。
任何建议都将受到重视。
答案 0 :(得分:2)
选定的值应为id;
$scope.selectedValue = 22;
请参阅Demo
修改强>
更改模板
<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>
请参阅更新的Demo
答案 1 :(得分:2)
如果您希望selectedValue
变量包含值而不包含ID,则不应使用obj.id as obj.value
,而应使用obj.value as obj.value
。
答案 2 :(得分:0)
我认为你误解了文档。
选定的值应该引用同一个对象的值,而不是对象本身。
因此,您可以将默认值设置为:
$scope.selectedValue = $scope.defaults[1].value;
这样,将设置默认值 - 如果值是字符串或数字,则无关紧要。
答案 3 :(得分:0)
如果您使用ng-repeat选项,则需要在选项标签上使用on-last-repeat。例如 select name =&#34; repeatSelect&#34; ID =&#34; repeatSelect&#34; NG-模型=&#34; usertypes.SelectedId&#34;
选项ng-repeat =&#34;选项在usertypes.AvailableOptions&#34;值=&#34; {{option.Id}}&#34; ng-selected =&#34; option.Id === usertypes.SelectedId&#34;上最后重复&GT; {{option.Name}}
选择