2017-07-18 94 views
1

如果我有這樣的選擇元素:如何避免選擇中的重複字符串?

​​

填充所選擇從有到具有相同值的多個Strins可能對象的列表元素,如何避免顯示重複的條目?

+3

的可能的複製[如何使NG重複過濾掉重複的結果(https://stackoverflow.com/questions/15914658/how-對做-NG-重複過濾出重複的-結果) –

回答

1

使用獨特的過濾Unique-filter

angular.module("app",['angular.filter']) 
 
    .controller("ctrl",['$scope',function($scope){ 
 
    $scope.searchFilterDispatcher={}; 
 
    $scope.searchFilterDispatcher.params = [ 
 
     {output:'abc', value:1}, 
 
     {output:'abc', value:1}, 
 
     {output:'xyz', value:2} 
 
    ]  
 
    
 
    }])
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-filter/0.5.16/angular-filter.js"></script> 
 
<html> 
 
<body ng-app="app" ng-controller="ctrl"> 
 
    <select 
 
    ng-model="dispatchOutput" 
 
    ng-options="item as (item.output | uppercase) for item in searchFilterDispatcher.params | unique : 'output'" 
 
    class="form-control" 
 
    id="dispatchOutput" > 
 
</select> 
 
</body> 
 
<html>

1

您應該創建一個自定義過濾器來過濾出獨特的價值和應用,爲NG選項:

app.filter('unique', function() { 
    return function (arr, field) { 
     return _.uniq(arr, function(a) { return a[field]; }); // (Assuming that you are using lodash in your app) if not use you custom logic here 
    }; 
}); 

在你的模板之後,你可以使用此過濾器。

但我會建議你使用https://github.com/a8m/angular-filter#unique

這有很多已經可以使用過濾器,可以爲你的上述目的。