Как заставить список фильтров работать для объектов внутри объектов? Это работает для других типов данных - PullRequest
0 голосов
/ 13 марта 2020

У меня проблема с пониманием, почему следующий код не работает.

  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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...