我有一个奇怪的问题,我无法在 Plunker 上重现。在模型中设置第一个选项“用户”时,选择会正确显示它并设置为“用户”。当我用角色加载另一个用户时:'admin',选择设置为空白选项。
在我的控制器中,我定义:
$scope.roles = ['user', 'admin'];
我的 $scope.user 对象如下所示:
{
"_id": "54f1f8f7e01249f0061c5088",
"displayName": "Test1 User",
"provider": "local",
"username": "test1",
"__v": 0,
"updated": "2015-03-02T07:41:42.388Z",
"created": "2015-02-28T17:20:55.893Z",
"role": "admin",
"profileImageURL": "modules/users/img/profile/default.png",
"email": "test1@user.com",
"lastName": "User",
"firstName": "Test1"
}
在我看来:
<select id="role" class="form-control" data-ng-model="user.role" data-ng-options="role for role in roles"></select>
当我反转角色数组$scope.roles = ['admin', 'user'];
时,管理员会正确显示,并且不会将“用户”设置为选中状态。
奇怪的是,如果我将第三个项目添加到数组中$scope.roles = ['user', 'admin', 'joe'];
,那么前两个“用户”和“管理员”将被正确设置,而最后一个“乔”则不会。
有任何想法吗?
- - 更新 - -
生成的选择标记如下所示:
<select id="role" class="form-control ng-pristine ng-valid" data-ng-options="role for role in roles" data-ng-model="user.role">
<option value="? string:joe ?"></option>
<option value="0" selected="selected" label="admin">admin</option>
<option value="1" label="user">user</option>
<option value="2" label="joe">joe</option>
</select>