Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将下拉框选择绑定到另一个对象的Id_Javascript_Angularjs - Fatal编程技术网

Javascript 将下拉框选择绑定到另一个对象的Id

Javascript 将下拉框选择绑定到另一个对象的Id,javascript,angularjs,Javascript,Angularjs,我有一个对象列表admins,其中包含Username和Id属性。在下拉列表中,我只显示用户名属性。如果用户现在选择了管理员,我想将Id(而不是用户名)存储到另一个对象设置: 以下是我迄今为止所尝试的: <select class="input-large" ng-model="vm.settings.selectedAdminId"> <option ng-repeat="admin in vm.admins | orderBy:'Username'">{{ad

我有一个对象列表
admins
,其中包含
Username
Id
属性。在
下拉列表中
,我只显示
用户名
属性。如果用户现在选择了管理员,我想将
Id
(而不是用户名)存储到另一个对象
设置

以下是我迄今为止所尝试的:

<select class="input-large" ng-model="vm.settings.selectedAdminId">
    <option ng-repeat="admin in vm.admins | orderBy:'Username'">{{admin.Username}}</option>
</select>

{{admin.Username}

我可以选择用户名,但我不知道如何将所选的
管理员Id
存储到
设置中。selectedAdminId
您可以这样做

<select class="input-large" ng-model="vm.settings.selectedAdminId">
    <option ng-repeat="admin in vm.admins | orderBy:'Username'" value="{{admin.Id}}">{{admin.Username}}</option>
</select>

{{admin.Username}
首先使用。那就是

<select class="input-large" 
    ng-model="vm.settings.selectedAdminId"
    ng-options="admin.Id as admin.Username for admin in vm.admins | orderBy:'Username'">
</select>

选定:{{vm.settings.selectedAdminId}}


哇,太简单了。谢谢!如果有一个可能值的列表,我需要存储所选值,那么这就是方法吗?如果对象本身没有id,也可以使用$index。避免使用ngRepeat渲染选择选项。您不能将ngModel绑定到对象(例如,绑定到整个
admin
对象,而不是
Id
),ngRepeat为每个选项标记创建子范围,这是冗余的,并且具有性能影响。最后,如果您尝试
this.settings.selectedAdminId=123
,您将无法设置所选的管理员-它将无法设置所选的选项。@dfsq感谢您的提示。@dfsq绝对+1这会更好。我是个新手,每天都给人留下深刻印象:-)。我将在4分钟内接受答案。这不仅更好,而且应该如此,因为使用ngRepeat可能会遇到某些问题。看这个。