2016-11-10 4 views
1

Вот мой угловой пользовательский интерфейс выберите HTML:Как удалить дубликаты опций из углового выбора ui?

<ui-select title="Select Template Directory" ng-change="searchTemplate()" theme="select2" ng-model="search_data.sub_directory" id="search_sub_directory" name="search_sub_directory" class="search_panel"> 
    <ui-select-match allow-clear="true" placeholder="Select Template Directory">{{$select.selected.subDirectory}}</ui-select-match> 
    <ui-select-choices repeat="template.subDirectory as template in response_template_directories | filter: $select.search"> 
     <span ng-bind-html="template.subDirectory | highlight: $select.search"></span> 
    </ui-select-choices> 
</ui-select> 

и здесь response_template_directories

[ 
{subDirectory : 1}, 
{subDirectory : 1}, 
{subDirectory : 1}, 
{subDirectory : 1}, 
{subDirectory : 1}, 
{subDirectory : 1}, 
{subDirectory : 2}, 
{subDirectory : 3}, 
] 

Выберите список также показывающие дубликатами

enter image description here

Как я могу удалить эти дубликаты в пользовательском интерфейсе выберите html?

+0

вы можете реализовать собственный Filer или фильтровать 'response_template_directories' массив в контроллере – Naigel

+0

да я могу, но я хочу сделать это в html –

+1

Возможный дубликат - http://stackoverflow.com/questions/15914658/how-to-make-ng-repeat-filter-out-duplicate-results –

ответ

2

Использовать фильтр уникальный (осуществить с AngularUI или импортировать a8m/angular-filter).

<ui-select title="Select Template Directory" ng-change="searchTemplate()" theme="select2" ng-model="search_data.sub_directory" id="search_sub_directory" name="search_sub_directory" class="search_panel"> 
<ui-select-match allow-clear="true" placeholder="Select Template Directory">{{$select.selected.subDirectory}}</ui-select-match> 
<ui-select-choices repeat="template.subDirectory as template in response_template_directories | unique: 'subDirectory' | filter: $select.search"> 
    <span ng-bind-html="template.subDirectory | highlight: $select.search"></span> 
</ui-select-choices> 

Или написать свой собственный фильтр с lodash:

app.filter('unique', function() { 
    return function (arr, field) { 
     return _.uniq(arr, function(a) { return a[field]; }); 
    }; 
}); 
+0

, давая ошибку: https://docs.angularjs.org/error/$injector/unpr?p0=uniqueFilterProvider%20%3C-%20uniqueFilter –

+0

Вы должны реализовать этот фильтр (https: // github .com/angular-ui/angular-ui/blob/master/modules/filters/unique/unique.js) в вашем приложении или сделать это с помощью lodash. – Matheus

+0

Отлично. Thankx. он решил мою проблему –