Angular ui-select 带或条件过滤器

Angular ui-select with or conditioned filter

我正在尝试在 ui select 中使用或条件过滤器,但我不确定如何处理它。我回答了一个类似的问题 here。但这要求使用 AND 条件,这对我也适用。这是我的代码

HTML

<ui-select ng-model="citySelected">
    <ui-select-match>
        {{$select.selected.name + ', ' + $select.selected.country}}
    </ui-select-match>
    <ui-select-choices repeat="city in List | filter: {name: $select.search} | orderBy:'sortOrder'">
        <span ng-bind-html="city.name + ', ' + city.country| highlight: $select.search"></span>
    </ui-select-choices>
</ui-select>

我正在使用属性过滤器来搜索我指定的任何参数。

    app.filter('propsFilter', function() {
       return function(items, props) {
           var out = [];

           if (angular.isArray(items)) {
               items.forEach(function(item) {
               var itemMatches = false;

               var keys = Object.keys(props);
               for (var i = 0; i < keys.length; i++) {
                   var prop = keys[i];
                   var text = props[prop].toLowerCase();
                   if (item[prop].toString().toLowerCase().indexOf(text) !== -1){
                       itemMatches = true;
                       break;
                   }
                }

                if (itemMatches) {
                  out.push(item);
                }
             });
           } else {
           // Let the output be the input untouched
               out = items;
           }

           return out;
         }
    });

 //To use add this to UI-Selet Where you are using filter
 <ui-select-choices repeat="city in List | propsFilter: {name: $select.search, secondFilter: $select.search, third: $select.search} | orderBy:'sortOrder'">