مشاكل في renderInOutlet

يجب أن أكون أفعل شيئًا غبيًا جدًا، لكنني غير قادر على رؤيته. آمل أن يؤدي النشر هنا إلى رؤيته حتى أتمكن من حذف هذا قبل أن يعرف أي شخص آخر مدى غبائي.

يجب أن يتم عرض “HELLO WORLD” في الصفحة الرئيسية. أرى “THIS IS THE HOMEPAGE” في وحدة التحكم. أعرف أنها تعمل. لكنها ليست هناك.

ثم حاولت إضافة “Extra item” لأنني لم تكن لدي أي أفكار أخرى. لم يتم عرضها أيضًا.

لقد تلقيت أخطاء قبل أن أعيد تسمية الملف إلى .gjs، لذلك هذا دليل إضافي على أنه ينتبه إلى الملف وأنه يحدث شيئًا ما.

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>);
    }
  });
});

هل من الممكن أن المنافذ لم يتم عرضها بعد، لذا لا يوجد منفذ للاتصال به؟

يتم تشغيل onPageChange عند تغيير المسار…

يبدو أن هذا هو نوع الشيء الغبي الذي أتحدث عنه!!

أريد أن يحدث هذا فقط عند الصفحة الرئيسية.

لكن نعم! إذا قمت بنقل أحد تلك الأشياء الخاصة بالعرض خارج onPageChange، فإنه يعرض.

فكيف أجعل هذا يحدث فقط إذا كان عنوان URL هو /؟

ربما أُنشئ مكونًا حقيقيًا وأضيف استدعاء shouldRender()؟

يجب أن تضيف خدمة التوجيه (داخل مكوّن) وتقوم بإعداد خاصية getter.

إعجابَين (2)

شكرًا جزيلًا! أنا في الغالب أعرف ما تعنيه كل تلك الكلمات!

إعجاب واحد (1)

حسنًا، آمل أن يساعد هذا! يرجى التأكيد بمجرد تشغيل كل شيء!

إعجاب واحد (1)

يا إلهي! لقد عرفت حقًا ما هي الخدمة! لقد عرفت حقًا ما هو الـ getter! الآن يتم عرض النص الخاص بي على الصفحة الرئيسية وليس على صفحة أخرى (ومن المفترض أن جميع الصفحات الأخرى كذلك!).

4 إعجابات

تم إغلاق هذا الموضوع تلقائيًا بعد مرور 30 يومًا على آخر رد. لم يُسمح برردود جديدة بعد الآن.