【发布时间】:2014-07-26 12:15:00
【问题描述】:
我想实现以下功能:
假设您有 1 个输入字段和 2 个下拉列表。在输入字段中,您可以填写您的电子邮件地址,然后您可以选择此电子邮件的类型(个人、专业、其他或无)。
现在在第三个下拉列表中,您将看到一个电子邮件列表,您可以从中选择,您喜欢的电子邮件地址。
那么应该发生什么:
1) 如果输入字段中没有任何内容,则首选电子邮件下拉列表为空(已经是这种情况)。
2) 当有一个电子邮件填写 AND 一个 TYPE 时,首选电子邮件下拉列表应该包含这个值:例如 test@test.com (Personal)。
3) 当有e-mail 填写但没有TYPE 时,首选e-mail 下拉列表应该包含这个值:test@test.com 例如所以没有type .
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>
JAVASCRIPT:
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":"member@test.com"}, {"id":1200, "emailTypeId":1,"email":"member2@test.com"}];
$scope.contactInfo.prefferedEmail = {};
$scope.filterEmail = function(email){
return (email.email);
}
}
JSFIDDLE:
HERE 是小提琴,但只有第一个在工作。
我没有蚂蚁线索,所以如果有人可以帮助我,那就太好了。感谢您的宝贵时间。
斯文。
【问题讨论】:
-
这里是你想要的一个很好的参考。 egghead.io/lessons/angularjs-ngrepeat-and-filtering-data。您可能希望使用工厂来创建共享数据服务,以便将过滤后的项目列表输出到您的下拉列表。 egghead.io/lessons/angularjs-isolate-scope-review 也是一个很好的参考
标签: javascript angularjs drop-down-menu filter ng-options