选择中的选定元素

时间:2014-08-10 11:04:22

标签: angularjs

我需要在Select标签中预先选择一个specfic元素。

我的模特是这样的:

{
  user: 'mjones',
  idprofile: 2,
  profiles: [
   {idprofile: 1, profile: 'admin'},
   {idprofile: 2, profile: 'read-write'},
   {idprofile: 3, profile: 'read-only'},
  ]
}

这表示"用户",我在打开包含select的用户数据的表单之前附加了一个配置文件列表,用于选择适当的配置文件。

如您所见,用户对象不包含"个人资料"对象,但只是它的idprofile。这是我的对象与ngSelect文档中发布的对象之间的区别。

我的视图包含select元素:

<select class="form-control"
    ng-model="user" 
    ng-options="profile.idprofile for profile in user.profiles">
</select>

这会按预期填充列表,但不会选择idprofile:2。

如何将来自用户对象的idprofile与profiles数组中的一个元素进行匹配?我更喜欢只在视图上工作。

1 个答案:

答案 0 :(得分:2)

您的ng-model必须设置为user.idprofile而不是用户。

<select class="form-control"
    ng-init="user = user || profile[0]" 
    ng-model="user.idprofile" 
    ng-options="item.idprofile as item.profile for item in user.profiles">
</select>

ng-options模式是“选择作为数组中值的标签”(https://docs.angularjs.org/api/ng/directive/select

使用一些重命名代码会更容易阅读:

{
  user: 'mjones',
  idprofile: 2,
  profiles: [
   {id: 1, name: 'admin'},
   {id: 2, name: 'read-write'},
   {id: 3, name: 'read-only'},
  ]
}


<select class="form-control"
    ng-init="user = user || profile[0]" 
    ng-model="user.idprofile" 
    ng-options="profile.id as profile.name for profile in user.profiles">
</select>