Я хочу реализовать следующий функционал:
Предположим, у вас есть 1 поле ввода и 2 выпадающих списка. В поле ввода вы можете ввести свой адрес электронной почты, а рядом с ним вы можете выбрать, к какому типу относится это электронное письмо (Личное, Профессиональное, Другое или ничего).
Теперь в третьем раскрывающемся списке вы увидите список адресов электронной почты, из которых вы можете выбрать тот адрес электронной почты, который вам больше нравится.
Итак, что должно произойти:
1) Если в поле ввода ничего нет, выпадающий список предпочитаемых адресов электронной почты пуст (это уже так).
2) Если адрес электронной почты заполнен И ТИП, раскрывающийся список предпочтительных адресов электронной почты должен содержать это значение: например, [email protected] (личный).
3) Если адрес электронной почты заполнен, но отсутствует ТИП, раскрывающийся список предпочтительных адресов электронной почты должен содержать это значение: [email protected], например, без типа.
HTML:
<div ng-repeat="email in contactInfo.emails">
<input id="email" type="text" ng-model="email.email"/>
<select id="emailType" ng-model="email.emailTypeId" ng-options="emailType.id as emailType.name for emailType in emailTypes">
<option value="">Choose...</option>
</select>
</div>
<br/><br/>
<label>Preferred e-mail:</label>
<select style="margin-left: 20px; width: 50%;" id="preferred-email" ng-model="contactInfo.preferredEmail" ng-options="email.email for email in (contactInfo.emails | filter:filterEmail) track by email.id">
<option value="">Choose...</option>
</select>
ЯВАСКРИПТ:
function MyCtrl($scope){
$scope.contactInfo = {};
$scope.emailTypes = [{"label":"Personal","id":1,"name":"Personal","rank":2},{"label":"Professional","id":2,"name":"Professional","rank":2},{"label":"Other","id":3,"name":"Other","rank":4}];
$scope.contactInfo.emails = [{"id":1100, "emailTypeId":2,"email":"[email protected]"}, {"id":1200, "emailTypeId":1,"email":"[email protected]"}];
$scope.contactInfo.prefferedEmail = {};
$scope.filterEmail = function(email){
return (email.email);
}
}
JSFIDDLE:
ЗДЕСЬ — это скрипка, но работает только первая.
Я понятия не имею, поэтому было бы здорово, если бы кто-нибудь помог мне с этим. Спасибо за ваше время.
Свен.