Javascript 使用ng选项隐藏“选择”列表中未定义的值
我已将选择列表显示如下:Javascript 使用ng选项隐藏“选择”列表中未定义的值,javascript,angularjs,Javascript,Angularjs,我已将选择列表显示如下: <select class="form-control" ng-model="primaryEmail" ng-options="e.email for e in emails" ng-change="changePrimaryEmail()"></select> $scope.emails使用ng repeat绑定到文本框 $scope.emails=[{"id":1,"customerID":1,"email":"a@test.com"
<select class="form-control" ng-model="primaryEmail" ng-options="e.email for e in emails" ng-change="changePrimaryEmail()"></select>
$scope.emails使用ng repeat绑定到文本框
$scope.emails=[{"id":1,"customerID":1,"email":"a@test.com","toDelete":0,"isPrimary":false},{"id":10,"customerID":1,"email":"b@test.com","toDelete":0,"isPrimary":false},{"id":11,"customerID":1,"email":"c@test.com","toDelete":0,"isPrimary":true},{"customerID":1,"toDelete":0}];
<div ng-repeat="em in emails">
<input type="email" ng-model="em.email" />
</div>
$scope.emails=[{“id”:1,“customerID”:1,“email”:a@test.com,“toDelete”:0,“isPrimary”:false},{“id”:10,“customerID”:1,“电子邮件”:b@test.com,“toDelete”:0,“isPrimary”:false},{“id”:11,“customerID”:1,“email”:c@test.com“,“toDelete”:0,“isPrimary”:true},{“customerID”:1,“toDelete”:0}];
当我添加新的文本框时,如果下拉列表未定义,则不应显示其值。
您可以按如下方式使用自定义过滤器:
ng-options="e.email for e in (emails | hideUndefined)"
过滤器:
app.filter('hideUndefined', function() {
return function(items) {
var filtered_items = [];
//iterate over all emails
for(var i = 0; i < items.length; i++) {
//if not undefined, add to filtered_items array
if(items[i].email !== undefined) {
filtered_items.push(items[i])
}
}
return filtered_items;
}
})
app.filter('hideUndefined',function(){
返回函数(项目){
var筛选的_项目=[];
//迭代所有电子邮件
对于(变量i=0;i
我认为你应该使用电子邮件
而不是$scope。电子邮件
如下:
<select class="form-control" ng-model="model.primaryEmail" ng-options="e.email for e in emails" ng-change="changePrimaryEmail()"></select>
<div ng-repeat="em in emails">
<input type="email" ng-model="em.email" />
</div>