Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用ng选项隐藏“选择”列表中未定义的值_Javascript_Angularjs - Fatal编程技术网

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>