ng-варианты с несколькими условиями - PullRequest
0 голосов
/ 05 мая 2020

У меня есть выбор, в котором установлен фильтр, чтобы не отображать строку publi c в массиве (publi c, publicExtra и private), если в ng-if выполняется указанное условие c . Но теперь я обнаружил, что это не единственное необходимое условие, и кажется, что мне нужно продублировать выбор с другими условиями, чтобы достичь того, что я хочу, это становится очень беспорядочным. Есть ли способ создать фильтр в контроллере и установить там условия, а затем показать фильтр в активировать фильтр при выборе, если все условия выполнены? Заранее спасибо.

<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>```

1 Ответ

0 голосов
/ 05 мая 2020

Да, вы можете использовать собственный фильтр с аргументом: | myfilter:conditions

<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 /* and other rules... */) {
          filtered.push(item);
        }
        else if(conditions.bbb == true){
          filtered.push(item);
        }        
    });

    return filtered;
  };
});

где items - elb_instance.vpc_names_with_subnet_types_for_elb[elb_instance.vpc_name]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...