【发布时间】:2021-10-14 20:49:58
【问题描述】:
我正在迭代一个工作列表,并且在这个列表上实现了一个搜索。 搜索正常,但现在它只根据一个字段过滤列表。
这是我的清单:
<ion-card *ngFor="let job of allJobs | search : searchTerm">
<ion-grid>
<ion-row>
<ion-col>
<div>
<span> {{job.day | uppercase}}</span>
<span> {{job.month | uppercase}}</span>
</div>
</ion-col>
<ion-col>
<div>
<span>{{job.time}}</span>
<span>{{job.name}}</span>
</div>
</ion-col>
</ion-row>
</ion-grid>
</ion-card>
我为实现搜索做了一个管道。这是它的代码。
transform(items: any[], terms: string): any[] {
if(!items) return [];
if(!terms) return items;
terms = terms.toLowerCase();
return items.filter( it => {
return it.name.toLowerCase().includes(terms); // only filter name
});
}
现在列表仅根据name 字段进行过滤。我也想根据day、month 和time 过滤列表。
谁能告诉我如何做到这一点?
作业的样本数据。 Jobs 是一个对象数组
[
{
"id":10,
"day":"Monday",
"month":"June",
"time":"10",
"name":"John",
"email":"john@gmail.com"
},
{
"id":11,
"day":"Tuesday",
"month":"May",
"time":"12",
"name":"Jane",
"email":"jane@gmail.com"
},
{
"id":12,
"day":"Friday",
"month":"June",
"time":"16",
"name":"",
"email":"john@gmail.com"
},
{
"id":13,
"day":"Tuesday",
"month":"August",
"time":"21",
"name":"",
"email":"kevin@gmail.com"
},
{
"id":14,
"day":"Saturday",
"month":"December",
"time":"12",
"name":"Sam",
"email":"sam@gmail.com"
},
]
而searchTerm 只是一个字符串。
如您所见,示例数据中的字段比 HTML 中显示的字段多,但我只尝试搜索 HTML 中显示的字段。某些字段可以有空值(例如,示例数据中的name 有两个空值)
我尝试了已经提供的解决方案,但没有一个能满足我的要求。
P.S:在某处读到管道不是执行此类功能的最佳选择。我也准备在课堂上实现这个逻辑。
【问题讨论】:
标签: ionic-framework ionic2 ionic3