md-autocomplete - 删除建议中的选定项目
md-autocomplete - remove selected items in suggestion
当用户选择了一个项目并将其标记为收藏时,我正在尝试删除建议中的 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;
}
这就是我在用户选择 object 时将状态标记为收藏所做的,我把它放在函数 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);
UPDATE
像这样创建一个函数:
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;
}
有一个简单的解决方法:
md-items="item in ctrl.querySearch(ctrl.searchText)| filter:{ is_favorite:false }"
您所要做的就是将过滤器放入控件的源代码中。
当用户选择了一个项目并将其标记为收藏时,我正在尝试删除建议中的 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;
}
这就是我在用户选择 object 时将状态标记为收藏所做的,我把它放在函数 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);
UPDATE
像这样创建一个函数:
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;
}
有一个简单的解决方法:
md-items="item in ctrl.querySearch(ctrl.searchText)| filter:{ is_favorite:false }"
您所要做的就是将过滤器放入控件的源代码中。