我有一个选择,该选择的过滤器设置为如果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>```
是,您可以使用自定义过滤器。
<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;
};
});