مكون GJS يفشل مع خطأ "helper غير معرف" عند عرضه عبر خدمة النموذج (Discourse 3.5.0)

مرحباً،

متابعة لهذه المشكلة: لقد أنشأت المكون الإضافي minimal-modal-test كما هو مقترح.

  • نجاح: عندما احتوى مكون النافذة المنبثقة للمكون الإضافي للاختبار (minimal-modal.gjs) على عناصر أساسية فقط (مثل <p>, <textarea>, DModal الأساسي، DButton، وحتى المساعدات المضمنة مثل #if للكتل الشرطية أو if المستخدمة لأيقونة زر الإرسال)، فقد تم عرضه بشكل صحيح دون أخطاء عند فتحه عبر modal.show() الذي تم تشغيله من مكون الزر المضاف عبر محوّل القيمة post-menu-buttons. يؤكد هذا أن خدمة النافذة المنبثقة الأساسية، وعرض المكون، ومحوّل القيمة، والمساعدات المضمنة تبدو وظيفية بشكل منفصل في بيئتي (Discourse v3.5.0.beta3-dev).

  • فشل: الخطأ (TypeError: userProvidedCallback is undefined / سابقاً Attempted to use a value as a helper... undefined) يعاود الظهور باستمرار بمجرد إضافة المكون الفرعي <StarRatingInput> مرة أخرى إلى قالب النافذة المنبثقة (minimal-modal.gjs أو feedback-form-modal.gjs).

لقد تأكدت من أن مكون StarRatingInput نفسه يستخدم الحلول البديلة التي تم تحديدها سابقاً (SVG مضمن بدلاً من مساعد dIcon، دوال سهمية للطرق مثل starClass لإصلاح سياق this، Array.from القياسي في جافاسكريبت بدلاً من مساعد range). يبدو أن الكود الداخلي لـ StarRatingInput صحيح الآن.

يشير هذا إلى أن الخطأ يتم تشغيله بواسطة عرض المكون المتداخل <StarRatingInput> (الذي يحتوي على حلقة #each، وربط الفئات الديناميكية، ومعالجات الأحداث) داخل مكون النافذة المنبثقة الأصل في سياق العرض المحدد هذا.

خطوات لإعادة الإنتاج

  1. أنت تقوم بتشغيل أحدث بيئة تطوير Discourse.

  2. قم بتسجيل الدخول كمستخدم.

  3. انتقل إلى أي موضوع وشاهد المنشور الأول.

  4. انقر فوق الزر “Test Failing Modal” المضاف إلى قائمة المنشورات.

  5. افتح وحدة تحكم مطوري المتصفح.

النتيجة المتوقعة

يجب أن يظهر مربع حوار بسيط يحتوي على مدخل لتقييم النجوم.

النتيجة الفعلية

فشل عرض النافذة المنبثقة بالكامل. تعرض وحدة تحكم المتصفح خطأ.