具有多个条件的ng-options

问题描述 投票:0回答:1

我有一个选择,该选择的过滤器设置为如果ng-if中满足特定条件,则不显示数组(public,publicExtra和private)中的“ public”字符串。但是现在我发现这不是唯一需要的条件,而且看来我必须用不同的条件来复制选择才能实现我想要的功能,这变得非常混乱。如果满足所有条件,是否可以在控制器中创建过滤器并在其中设置条件,然后在选择中激活过滤器中显示过滤器?预先感谢。

<select ng-model="elb_instance.use_vpc"
                    ng-if="elb_instance['new_record?']"
                    ng-options="('Subnet: ' + type) for type in elb_instance.vpc_names_with_subnet_types_for_elb[elb_instance.vpc_name] | filter: '!public' : true"
                    ng-show="elb_instance.vpc_name"
                    id="use_vpc"
                    class="input-medium">
                    <option value="">Select subnet</option>
            </select>```

angularjs ng-options angularjs-ng-options
1个回答
0
投票

是,您可以使用自定义过滤器。

<select ng-model="elb_instance.use_vpc"
        ng-if="elb_instance['new_record?']"
        ng-options="('Subnet: ' + type) for type in elb_instance.vpc_names_with_subnet_types_for_elb[elb_instance.vpc_name] | myfilter:conditions"
        ng-show="elb_instance.vpc_name">
    <option value="">Select subnet</option>
</select>

其中myfilter可能类似于:

app.filter('myfilter', function() {
   return function( items, conditions) {
    var filtered = [];

    angular.forEach(items, function(item) {
       if(conditions.aaa == true) {
          filtered.push(item);
        }
        else if(conditions.bbb == true){
          filtered.push(item);
        }        
    });

    return filtered;
  };
});
© www.soinside.com 2019 - 2024. All rights reserved.