Angularjs 需要在angular ui select中添加多个过滤器

Angularjs 需要在angular ui select中添加多个过滤器,angularjs,angularjs-filter,angular-filters,angular-ui-select,Angularjs,Angularjs Filter,Angular Filters,Angular Ui Select,需要在angularuiselect2中添加多个过滤器 <div class="form-group "> <ui-select id="abc" ng-model="abc" multiple theme="bootstrap" > <ui-select-match placeholder="Select abc..." class="ui-select-match">{{$item.name | capitalize}}</u

需要在
angular
uiselect2中添加多个过滤器

<div class="form-group ">
    <ui-select id="abc" ng-model="abc" multiple theme="bootstrap"  >
       <ui-select-match placeholder="Select abc..." class="ui-select-match">{{$item.name | capitalize}}</ui-select-match>
        <ui-select-choices id= "abchoice" class="ui-select-choices" repeat="item in itemDetails| filter: $select.search ">
               <div id="selected_{{item}}" ng-bind-html="item .name | capitalize | highlight: $select.search" style="padding: 0px; "></div>
         </ui-select-choices>
     </ui-select>

</div>
我需要通过
filter:$select.search
和orderItem对其进行过滤。如何在ui选择中添加此自定义筛选器


在下拉列表中,我应该只得到a,b,我应该过滤c

var app = angular.module('demo', ['ui.select']);
app.controller('DemoCtrl', function($scope) {

  $scope.itemDetails = ['a','b','c'];
  $scope.orderItem = {};
  $scope.orderItem.items = ['a','b']; // by default selected items

});
在您看来

<ui-select multiple ng-model="orderItem.items" theme="select2" ng-disabled="disabled" style="width: 300px;">
   <ui-select-match placeholder="Select order item...">{{$item}}</ui-select-match>
    <ui-select-choices repeat="item in itemDetails | filter:$select.search">
      {{item}}
    </ui-select-choices>
 </ui-select>
  <p>Selected: {{orderItem.items}}</p>
查看:

 'use strict';
    var app = angular.module('demo', ['ui.select']);
    app.controller('DemoCtrl', function($scope) {
      $scope.itemDetails = ['a','b','c'];
      $scope.orderItem = {};
      $scope.orderItem.items = null;
    });
  // filter to exclude a value/item
  app.filter('Exclude', function() {
      return function( items) {
        var filtered = [];
        angular.forEach(items, function(item) {
          if(item!='c'){
            filtered.push(item);
          }
        });
        return filtered;
      };          
 });
<p>Selected: {{orderItem.items}}</p>
  <ui-select ng-model="orderItem.items" theme="select2" ng-disabled="disabled" style="width: 300px;">
    <ui-select-match placeholder="Select order item...">{{$select.selected}}</ui-select-match>
    <ui-select-choices repeat="item in itemDetails | Exclude |  filter:$select.search">
      {{item}}
    </ui-select-choices>
  </ui-select>
所选:{{orderItem.items}

{{$select.selected} {{item}}

如果需要从列表中筛选您的
orderItem
,请将其删除到此列表中

您应该有3个列表:

  • 所有项目(将所有项目存储在某处)
  • 订单项
  • 项目选择
从itemsInSelect中选择一个项目时,将其添加到orderItems并从itemsInSelect中删除


这是你想要的吗?

谢谢你的回复。。。但我需要添加过滤器。。我不应该在我的Droopdown中得到c这是我的问题@嗯,你能帮帮我吗@MMKcustom筛选器是排除您不需要的对象所必需的。@mammam检查更新的答案,希望它能在某个时候帮助您,以另一种方式解决问题;)
<p>Selected: {{orderItem.items}}</p>
  <ui-select ng-model="orderItem.items" theme="select2" ng-disabled="disabled" style="width: 300px;">
    <ui-select-match placeholder="Select order item...">{{$select.selected}}</ui-select-match>
    <ui-select-choices repeat="item in itemDetails | Exclude |  filter:$select.search">
      {{item}}
    </ui-select-choices>
  </ui-select>