我需要在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数组中的一个元素进行匹配?我更喜欢只在视图上工作。
答案 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>