md-autocomplete - удалить выбранные элементы в предложении

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

Предположим, что у нас есть эта структура 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);
  };

}

Это то, что я пробовал до сих пор, но это не дает правильный результат.

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

ОБНОВИТЬ

КОДЕПЕН ДЕМО

2 ответа

Решение

Для этого есть простое решение:

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

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

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

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

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

И позвони в querySearch before returning results:

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

  results = results.filter(filterFavotites);

  return results;
}
Другие вопросы по тегам