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;
}