【发布时间】:2018-10-22 14:45:19
【问题描述】:
我正在尝试实现一个基于城市名称搜索用户输入的搜索栏。 在我的 HTML 页面上,城市名称已经列出,但用户也可以选择搜索特定城市。 城市名称来自我在 Parse 中的数据库。
这是我的 HTML 代码:
<ion-searchbar (ionInput)="searchCities($event)"></ion-searchbar>
这是我的 .ts 代码,其中citiesTotal 是一个变量,其中包含一个数组,其中包含来自 Parse 的有关城市的数据:
searchCities(event) {
var val = event.target.value;
if (val && val.trim() != '') {
this.citiesTotal= this.citiesTotal.filter((city) => {
console.log(city.name);
return (city.name.toLowerCase().indexOf(val.toLowerCase()) > -1);
})
}
}
单击搜索栏后,我的控制台日志行成功检索了城市名称。但是搜索栏本身不会过滤任何城市名称。
[更新]
按照@SergeyRudenko 的建议,我想我会包含更多代码来帮助解决这个问题...
这是我的 .ts 代码,其中包括我从提供程序文件中提取数据的代码。 CityServ 是我的提供者文件。
constructor (private cityService: CityServ) {
//this successfully retrieves the data I need
if (this.cityService.all().length == 0) {
this.cityService.getCities().then((success) => {
this.cities = this.cityServ.all();
this.citiesTotal = this.cities;
}).catch((error) => {
console.log('Error!');
});
} else {
this.cities = this.cityService.all();
this.citiesTotal = this.cities;
}
}
searchCities(event) {
var val = event.target.value;
if (val && val.trim() != '') {
this.citiesTotal= this.citiesTotal.filter((city) => {
console.log(city.name);
return (city.name.toLowerCase().indexOf(val.toLowerCase()) > -1);
})
}
}
这是我的 .html 文件中的相关代码:
<ion-searchbar (ionInput)="searchCities($event)"></ion-searchbar>
<ion-list>
<ion-item *ngFor="let item of items">
{{city.name}}
</ion-item>
</ion-list>
【问题讨论】:
-
@SergeyRudenko 是的,我做到了!我更改了我的代码以适应网站上的示例,但我仍然遇到同样的错误。与中一样,搜索栏不会过滤任何项目。
-
好的,您可以使用您的代码并使用 stackblitz.com 创建可重现的示例吗?或者只是分享相关的完整代码
-
@SergeyRudenko 刚刚添加!
-
太棒了,我会在几个小时内检查并分享我的答案。
标签: typescript ionic-framework parse-platform