У меня проблема с пониманием, почему следующий код не работает.
initializeItems(): void {
this.notesService.load();}
this.notesService.load()
создает объект с несколькими объектами, такими как, например, заметки, который затем имеет несколько атрибутов, таких как notes.title. filterList(evt){}
срабатывает, когда вход зарегистрирован в строке поиска. Когда я использовал список, код работает, но он не работает для моих объектов.
filterList(evt) {
this.initializeItems();
const searchTerm = evt.srcElement.value;
if (!searchTerm) {
return;
}
this.notesService.notes = this.notesService.notes.filter(currentGoal => {
console.log(this.notesService.notes)
if (currentGoal.title && searchTerm) {
if (currentGoal.title.toLowerCase().indexOf(searchTerm.toLowerCase()) > -1) {
return true;
}
return false;
}
});
}
, если я удалю this.initializeItems()
; из filterList(evt)
я вижу, что фильтрация работает. Однако я хочу включить this.initializeItems()
, чтобы при использовании пользователем возврата назад предыдущая фильтрация игнорировалась и все объекты снова отображались. Когда я не включаю this.initializeItems()
, я вижу, что this.notesService.notes
пусто после фильтрации.
Когда я включаю this.initializeItems()
, фильтрация не происходит. Может кто-нибудь сказать мне, почему это не работает? Когда я использую, например, список с данными, эти функции работают нормально.
Чтобы уточнить, что делает initializeItems (), когда Note содержит идентификатор, заголовок, содержимое и дату.
export class NotesService {
public notes: Note[] = [];
public loaded: boolean = false;
constructor(private storage: Storage,private navCtrl: NavController) { }
load(): Promise<boolean> {
return new Promise((resolve) => {
this.storage.get('notes').then((notes) => {
if(notes != null){
this.notes = notes;
}
this.loaded = true;
resolve(true);