[每当我使用搜索过滤列表时,它都会为我提供过滤后的值。当我的搜索栏为空时,它不会以ionic [

问题描述 投票:0回答:1

[每当我使用搜索过滤列表时,它都会为我提供过滤后的值。当我的搜索栏为空时,它并没有以离子形式显示我的原始列表。

page.html

<ion-searchbar 
  [(ngModel)]="searchTerm"  
  [(ngModel)]="searchList"
  (input)="setFilteredTitle()" 
  class="search">
</ion-searchbar>

Page.ts

filterItems(searchTerm){
  return this.result.filter(item => {
    return item.category_name.toLowerCase().indexOf(searchTerm.toLowerCase()) > -1;
  });
}

filterList(searchList){
  return this.result2.filter(items => {
    return items.store_name.toLowerCase().indexOf(searchList.toLowerCase()) > -1;
  });
}

setFilteredTitle(){
  this.showlist = true
  this.result = this.filterItems(this.searchTerm)
  this.result2 = this.filterList(this.searchList)
}

在ionic中,我想从使用这些功能的单个搜索栏中搜索两个不同的列表。它过滤了我的数据。但是,每当我从搜索栏中删除值时,它都不会把我的原始列表带回来,并且刷新之前也不会再次过滤。有什么问题,请提前帮助thanx。

angular ionic-framework search filter ionic4
1个回答
0
投票

使用当前逻辑,只有在数组中匹配该值时,您才能获取值;而当清除该值时,它与任何内容都不匹配,并且您会得到一个空的Array。因此,如果您在searchTerm中什么都没有得到,则需要更改逻辑以返回相同的数组。您的代码应如下所示。我还没有玩过ion-searchbar,所以在这里idk有关list变量,但是您知道我在说什么。

filterItems(searchTerm){
  if(!searchTerm) return this.result;
  return this.result.filter(item => {
    return item.category_name.toLowerCase().indexOf(searchTerm.toLowerCase()) > -1;
  });
}

filterList(searchList){
  if(!searchList) return this.result2;
  return this.result2.filter(items => {
    return items.store_name.toLowerCase().indexOf(searchList.toLowerCase()) > -1;
  });
}
© www.soinside.com 2019 - 2024. All rights reserved.