Хотя у меня это работает, способ его работы кажется неправильным. У меня есть раскрывающийся список (DDL), который отображает список команд. Верхняя и стандартная запись - «Выбрать команду ...». Хотя мой DDL привязан к модели, «Select Team ...» не должен быть частью этого, поскольку «Select Team ...» не имеет смысла для модели домена.Восстановление значения выпадающего значения по умолчанию с помощью angularjs
Когда пользователь нажимает кнопку «Добавить новое», форма очищается, и все DDL должны возвращаться к значениям по умолчанию.
Вот соответствующие функции контроллера:
scope.addUser = function() {
resetToNewUser();
$scope.profileVisible = true;
$scope.oneAtATime = true;
$scope.accordionStatus = { isFirstOpen: true, isFirstDisabled: false };
}
function resetToNewUser() {
$scope.selectedUser.NtId = "";
$scope.selectedUser.UserId = -1;
$scope.selectedUser.IsActive = true;
$scope.selectedUser.FirstName = "";
$scope.selectedUser.LastName = "";
$scope.selectedUser.JobTitle = "";
$scope.selectedUser.Email = "";
$scope.selectedUser.SecondaryEmail = "";
$scope.selectedUser.PhoneNumber = "";
for(var i = 0; i < $scope.roleList.length; i++) {
if($scope.roleList[i].RoleSystemName.trim() === "BLU") {
$scope.selectedUser.Role = $scope.roleList[i];
}
}
$scope.selectedUser.SupervisorId = null;
//HACK BELOW//
document.getElementById('selTeam').selectedIndex = 0; // <-- This works, but feels like a hack.
$scope.selectedUser.IsRep = false;
for(var i = 0; i < $scope.signingAuthorityList.length; i++) {
if($scope.signingAuthorityList[i].SigningAuthoritySystemName === "SME") {
$scope.selectedUser.SigningAuthority = $scope.signingAuthorityList[i];
}
}
$scope.selectedUser.IsOutOfOfficeEnabled = false;
$scope.selectedUser.OutOfOfficeStartDate = null;
$scope.selectedUser.OutOfOfficeEndDate = null;
$scope.selectedUser.OutOfOfficeAppointedRepId = null;
}
Вот как DDL определяется в шаблоне:
<div class="form-group">
<label for="" class="control-label col-sm-2 required">Team</label>
<div class="col-sm-10">
<select class="form-control" id="selTeam"
ng-model="selectedUser.Team"
ng-options="team as team.TeamName for team in teamList track by team.TeamId">
<option value="">Select Team...</option>
</select>
</div>
</div>
Есть ли лучший способ сделать это?
Я хотел бы отметить, что, так же, как это выглядит, как «взломать» по сравнению с тем, что происходит вокруг него, вы также не найдете более быстрый/уборщик способ (за исключением, может быть, если у вас уже есть собственный объект js для выбора, но тогда ById настолько глупо, но не сильно). Я бы предложил переместить эту магическую строку где-то, что было бы легче изменить, или сделать ее динамически переданной из библиотеки (которая должна знать), но решение для пуристов angularjs, к сожалению, не то, с чем я могу помочь. G'luck! – abluejelly