#Componente eliminado sigue escuchando por this.$root.$on

1 messages · Page 1 of 1 (latest)

tender musk
#

La cuestión es que al dejar de renderizar un componente ( "writer") que tiene una escucha asociada a

this.$root.$on('event', ()=>console.log("hola")) 
``` por ejemplo, cuando estamos renderizando otro componente diferente pero en enviamos el evento "event", el componente "writer" que dejo de renderizarse lo recibe y también lo ejecuta, sacando por consola en este caso el String "hola" y además si renderizamos 3 componentes "writer" y los dejamos de renderizar mas tarde y volvemos a emitir el evento "event", por consola como es de esperar recibimos 3 Strings de "hola"
trim spindle
#

Sobre el proyecto que tienes indicame si ya lo actualizaste y que pasos debo de seguir para ver que pasa

tender musk
trim spindle
#

Ok

tender musk
#

Ya tengo actualizado el repo, para encontrar el fallo que digo hay que seguir esta ruta:

#
  1. vas a 'your profile'
#
  1. Haces click en post, pero recuerda cual es porque después vas a tener que hacer click en el mismo
#
  1. Una vez dentro del post con el editor abierto, le das a update (arriba a la derecha) y para que se actualize algo, añade una nueva tag por ejemplo, le das a add y después a save
#

(Los estilos hay que tocarlos xdd)

#
  1. Por consola aparecerán algunas líneas de código, y entre ellas una que dice "hola"
#

Después de esto, eres redirigido a tu perfil de nuevo, tendrías que editar de nuevo el mismo post añadiéndole otra tag si quieres por ejemplo y aquí es donde viene el problema:
Se muestran varias líneas de código por consola, pero esta vez en vez de 1 "hola", que era lo que tenia que salir, se muestran 2 "hola", el del componente que estas viendo antes y el que ahora no se ve y pero que es con el que editastes antes, y mientras más lo edites, más "hola" vas a tener

#

En el código, lo puedes encontrar en: resources/components/code/UpdateCode.vue

#

Método update():

update(){
      //POST
      axios.put('/api/post/code/'+this.post.idPost, {
        'postName': this.postName,
        'html':this.xml,
        'css':this.css,
        'js':this.js,
        'script':this.post.script,
        })
      //TAGS
      .then(()=>{
        let data = {
          tags:this.tags,
          idPost:this.post.idPost,
        }
        axios.post('/api/tag/tag', data);
      })
      //Go to prpofile
      .then(() => {
        this.$router.push({name:'my-code'})
        this.update = ()=>{ console.log("hola")};
      })
      .catch((err)=>{
        console.log("Error save desde CreateCode.vue");
        console.log(err)
        this.errors = error.response.data.errors;
      })
    },
#

Se muestra "hola", porque cuando sale bien el update, digo que el metodo update() = console.log("hola")

#

En el caso de que no lo pusiera, se realizarían 2 peticiones o las equivalentes al numero de veces que hayas editado el post

#

hasta ahora lo he estado arreglando haciendo la chapucilla de this.update = ()=>{}, el "hola" ese es solo para debugear

#

Creo que mas o menos me he explicado, si tienes alguna duda dímelo, gracias!!

#

Ah por cierto, se me olvidaba, el fallo creo que esta aquí, que es cuando se llama a la función save, en mounted():

    this.$root.$on('save', (tags)=>{
      this.tags=tags;
      this.update();
    });
trim spindle
#

Reviso, dame chanse

tender musk
#

Sisi, cuando puedas

trim spindle
#

La primera peticion devuelve mucha data, pero la segunda (o eso creo) devuelve Unauthenticated

tender musk
#

es un fallo que tiene cuando por ejemplo te logueas y apagas el pc o cierras el nav, a veces como que se buggea

#

se lo que le pasa, tengo que cambiar si esta logueado o no al sesionstorage en vez de en el local