Problemas con renderInOutlet

Debo estar haciendo algo muy estúpido, pero soy incapaz de verlo. Espero que publicarlo aquí me haga verlo para poder eliminarlo antes de que nadie más sepa lo estúpido que soy.

“HELLO WORLD” debería aparecer en la página de inicio. Veo “THIS IS THE HOMEPAGE” en la consola. Sé que se está ejecutando. Pero no está ahí.

Luego intenté añadir “Extra item” porque no tenía otras ideas. Tampoco aparece.

Tuve errores antes de renombrar el archivo a .gjs, así que eso es una prueba más de que está prestando atención al archivo y está haciendo que suceda algo.

import { apiInitializer } from "discourse/lib/api";

export default apiInitializer("1.8.0", (api) => {
  // see if we're on the home page
  api.onPageChange(() => {
    const router = api.container.lookup("service:router");
    const url = router?.currentURL;
    const isHomePage = url === "/";
    api.renderInOutlet("top-notices", `<template>Extra item</template>`);
    if (isHomePage) {
      console.log("THIS IS THE HOMEPAGE");
      api.renderInOutlet("after-header", `<template>HELLO WORLD</template>`);
    }
  });
});

¿Es posible que los outlets aún no se hayan renderizado, por lo que no hay ningún outlet al que adjuntarse?

onPageChange se dispara al cambiar de ruta…

¡Eso suena como el tipo de idiotez de la que estoy hablando!

Quiero que esto suceda solo en la página de inicio.

¡Pero sí! Si saco uno de esos renderizados fuera del onPageChange, se renderiza.

Entonces, ¿cómo hago que esto suceda solo si la URL es /?

Quizás haga un componente real y agregue una llamada a shouldRender()?

deberías agregar el servicio de enrutador (dentro de un Componente) y configurar un getter.

2 Me gusta

¡Gracias mil! ¡La mayoría de esas palabras las conozco!

1 me gusta

¡Espero que esto ayude! ¡Por favor, confirma una vez que todo esté en marcha!

1 me gusta

¡Oh, nena! ¡Realmente sabía lo que era un servicio! ¡Realmente sabía lo que era un getter! Ahora mi texto se está renderizando en la página de inicio y no en otra página (¡y presumiblemente en todas las demás!).

4 Me gusta

Este tema se cerró automáticamente 30 días después de la última respuesta. Ya no se permiten nuevas respuestas.