У меня странная проблема, которую я не могу воспроизвести на 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": "[email protected]",
"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 выглядит следующим образом:
<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>
select
— что вы там видите для последнего варианта? - person Ilya Luzyanin   schedule 02.03.2015user.role
? Я имею в виду в тот момент, когда angular выполняет привязку. - person Ilya Luzyanin   schedule 02.03.2015$scope.user
в контроллере и инициализируете его некоторым значением (может быть, пустым объектом), верно? Итак, попробуйте установить$scope.user.role= $scope.roles[0]
в своем контроллере, чтобы он инициализировался с некоторым значением по умолчанию (ссылка на существующий индексroles
) до того, как будут получены фактические пользовательские данные. - person Ilya Luzyanin   schedule 02.03.2015