2016-10-08 3 views
3

Я использую библиотеку ui-select для функции «Tagging».Угловой UI-выбор добавления дублирующего тега для объектов «Tagging»

Я использую массив объектов, в которых каждый объект имеет идентификатор и имя. Он работает правильно.

Если я нахожу несуществующий тег, он создает новый, который я хотел, но единственная проблема, с которой я сталкиваюсь, - это если пользователь вводит уже существующий тег, он отображает как новый, так и существующий тег. ui-select должен допускать новые тегирования только в том случае, если он еще не существует.

enter image description here

Если я печатаю алгоритм, то он должен выбрать/отображение существующего «Алгоритм» тегов, а не позволяя дублировать вставки тегов.

Я не могу найти никаких настроек для этого. Такая же проблема происходит на странице их меток ui-select tagging example. Я предполагаю, что это не должно быть так. Так это возможно в ui-select или я должен обрабатывать его в своем коде? Любое решение?

это мой код:

<ui-select multiple tagging="questionVm.addNewTag" theme="select2" ng-model="addQueVm.newQuestion.tags" class="mdl-select"> 
    <ui-select-match placeholder="Enter tags"> 
     <span ng-bind="$item.name"></span> 
    </ui-select-match> 
    <ui-select-choices repeat="tag in (questionVm.allTags | filter: $select.search)"> 
     <span ng-bind="tag.name"></span> 
    </ui-select-choices> 
</ui-select> 

ответ

0

Вы будете хотеть, чтобы изменить функцию мечения только возвращать значение, если тег не находится в вашем регистронезависимом набор тегов:

questionVm.addNewTag = function(tag){    
    // this could be done somewhere else for efficiency 
    var lowerCaseTags = questionVm.allTags.map(
     function(obj){ 
      return obj.name.toLowerCase() 
     } 
    ); 

    // this keeps the new tag from being displayed unless it is really new 
    if(!(tag.toLowerCase() in lowerCaseTags)){ 
     return {name: tag} 
    } 
}