2017-01-02 4 views
2

Im пытается удалить md-item в предположении, когда пользователь выбрал элемент и отмечен как избранный. Чтобы прояснить вопрос, здесь приведена ниже структура.md-autocomplete - удалить выбранные объекты в предложение

Предположим, что у нас есть эта структура states.

function loadAll() { 

     var allStates = [ 
      { 
      display : Alabama, 
      value : alabama, 
      is_favorite : false 
      }, 
      { 
      display : Alaska, 
      value : alaska, 
      is_favorite : false 
      }, 
      { 
      display : California, 
      value : california, 
      is_favorite : false 
      }, 
      { 
      display : Colorado, 
      value : colorado, 
      is_favorite : false 
      }, 
      { 
      display : Florida, 
      value : florida, 
      is_favorite : false 
      }, 
      { 
      display : Georgia, 
      value : georgia, 
      is_favorite : false 
      }, 
     ]; 

     return allStates; 
} 

Это то, что я сделал для обозначения состояния, как любимые, когда пользователь выбрал объект я положил его на функции md-selected-item-change.

function selectedItemChange(object) { 
    if (object) { 
     object.is_favorite = true; 
    } 
} 

Теперь можно изменять createFilterFor() исключить из результатов состояния, которое имеет is_favorite == true после выбора конкретного состояния?

function createFilterFor(query) { 
    var lowercaseQuery = angular.lowercase(query); 

    return function filterFn(state) { 
    return (state.value.indexOf(lowercaseQuery) === 0); 
    }; 

} 

Это то, что ive'd пробовал до сих пор, но не дает правильного результата.

return (state.value.indexOf(lowercaseQuery) === 0 && state.is_favorite == false); 

UPDATE

CODEPEN DEMO

+0

Пожалуйста, обратитесь по этой ссылке я думаю, что вы можете получить помощь: https://material.angularjs.org/latest/demo/chips –

+0

привет я не могу найти ни одного примера из этой демо –

+0

Не могли бы вы показать нам свой полный код в фрагменте –

ответ

2

Существует простое исправление для этого:

md-items="item in ctrl.querySearch(ctrl.searchText)| filter:{ is_favorite:false }" 

Все, что вам нужно сделать, это поставить фильтр в источнике для вашего контроля.

Пожалуйста, проверьте код пера: http://codepen.io/ash972/pen/ZLYNPM

+1

Большое спасибо за простое решение –

+0

С удовольствием помогите. – Ash

1

Создать такую ​​функцию:

function filterFavotites(item) { 
    return !item.is_favorite; 
} 

И называют его в querySearch, прежде чем возвращать результаты:

function querySearch (query) { 
    var results = query ? vm.states.filter(createFilterFor(query)) : vm.states, 
     deferred; 

    results = results.filter(filterFavotites); 

    return results; 
} 
+1

это тоже хорошо работает, но у Ash есть простое решение , Спасибо за ответ! –

Смежные вопросы