Angularjs如何设置select的默认值

时间:2014-04-27 07:45:19

标签: 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 value="">---Select option-----</option>
</select>

我想要实现的是选择字符串2&#39;默认情况下。但它不起作用。 我遇到的问题是selectedValue是一个字符串:

$scope.selectedValue = "string 2";

根据我从文档中学到的知识,selectedValue必须是同一个对象。但不幸的是,这是不可能的。在我的情况下,selectedValue必须是一个字符串。 换句话说,我只需要使用选项的名称,我不关心id。 我试着用ng-repeat。它甚至可以工作,但显示一个空的选项,我不认为使用ng-repeat是一个很好的方法。

任何建议都将受到重视。

4 个答案:

答案 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}}

选择