исключить значение с помощью в ng-options - PullRequest
1 голос
/ 01 мая 2020

Я пытался выяснить, как исключить значение из массива, сгенерированного ng-options, используя фильтры, но безуспешно.

Массив, сгенерированный фрагментом ниже, генерирует следующий массив ["publicExtra","public","private"] Я хочу исключить "publi c" из опций. Заранее спасибо.

<select ng-model="elb_instance.use_vpc"
                    ng-options="('Subnet: ' + type) for type in elb_instance.vpc_names_with_subnet_types_for_elb[elb_instance.vpc_name]"
                    ng-disabled="!elb_instance['new_record?']"
                    ng-show="elb_instance.vpc_name"
                    id="use_vpc"
                    class="input-medium">

1 Ответ

1 голос
/ 01 мая 2020

Вы можете легко сделать это, используя filter и используя ! перед строкой поиска для отмены предиката, например:

ng-options="('Subnet: ' + type) for type in types | filter: '!public'">

Но обратите внимание, что при этом игнорируются оба public & publicExtra в качестве фильтра basi c не дает точного соответствия. Для этого нам также нужно будет передать true для comparator, например:

ng-options="('Subnet: ' + type) for type in types | filter: '!public' : true">

var app = angular.module('myApp', []);
app.controller('AppCtrl', function($scope) {
  $scope.selected = "";
  $scope.types = ["publicExtra","public","private"];
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular.min.js"></script>
<section ng-app="myApp">
  <div ng-controller="AppCtrl">
    <select ng-model="selected" 
      ng-options="('Subnet: ' + type) for type in types | filter: '!public' : true">
    </select>
  </div>
</section>
...