Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Cannot read property 'push' of undefined

Erro:

18 | inscrever(func){
> 19 |     this._inscritos.push(func);
 | ^  20 | }
21 | desinscrever(func){
22 |     this._inscritos = this._inscritos.filter(f => f !== func);

Entendi que a propriedade push está retornando sem o valor da função func.

Mas ela está sendo definida em:

  notificar(){
    this._inscritos.forEach(func =>{
        func(this.notas);
    });
    }

Alguma luz?

Arquivo completo:

export default class ArrayDeNotas{
    constructor(){

        this.notas = [];
        this.inscritos = [];
    }

    adicionarNota(titulo, texto, categoria){
        const novaNota = new Nota(titulo, texto, categoria);
        this.notas.push(novaNota);
        this.notificar();
    }
    apagarNota(indice){
        this.notas.splice(indice, 1);
        this.notificar();
    }

    inscrever(func){
        this._inscritos.push(func);
    }
    desinscrever(func){
        this._inscritos = this._inscritos.filter(f => f !== func);
    }

    notificar(){
        this._inscritos.forEach(func =>{
            func(this.notas);
        });
    }
}

class Nota{
    constructor(titulo, texto, categoria){
        this.titulo = titulo;
        this.texto = texto;
        this.categoria = categoria;
    }
}
2 respostas
solução!

Fala Leonardo, tudo bem?

O que acontece é que você declara this.inscritos no seu constructor, porém utilizathis._inscritos durante o seu código, então para resolver o problema basta mudar this.inscritos para this._inscritos no construtor.

Espero ter ajudado, bons estudos :D

Na mosca, Matheus!

Muito obrigado, funcionou perfeitamente.