شكراً @Arkshine! أعتقد أنني أفهم كيفية تمرير الإجراءات في مكون Glimmer بشكل عام. ومع ذلك، انتقل مساعد route-action عبر تسلسل المسار لاستدعاء إجراء غير معلن في النطاق المحلي. لذلك يمكنك فقط تعريفه في المكون، على سبيل المثال:
يمكنني العمل فقط على القالب، وأهتم بشكل أقل بالمنطق المستدعى لأنه يتم تمريره تلقائيًا (من وجهة نظري :). وهو ما أعجبني، لكنني لا أفهم ما إذا كانت هذه هي أفضل ممارسة على الإطلاق وكيف يمكنني الوصول إليها الآن في مكون Glimmer.
أنت على حق؛ خطأي. أجبت تلقائيًا دون تفكير كثير. (حسنًا، كانت الساعة 5 صباحًا ).
ليس لدي إجابة لسؤالك في الوقت الحالي، لكنني سأعود إليك إذا اكتشفت شيئًا من جانبي!
import { get } from "@ember/object";
import { routeAction } from "discourse/helpers/route-action";
{{on "click" (routeAction "showLogin" (get this "router._router"))}}
يفترض أن لديك خدمة router معرفة في المكون.
لست متأكدًا مما إذا كان يعتبر ممارسة سيئة. لا يبدو فكرة جيدة، لكنها تعمل.
أعتقد أنه إذا استخدمت التصدير الافتراضي، فيجب أن يعمل كما هو متوقع (أي دون الحاجة إلى حقن خدمة الموجه، أو تمرير مرجع إليها يدويًا)
import routeAction from "discourse/helpers/route-action";
(لست متأكدًا من سبب وجود وظيفة داخلية تم تصديرها أيضًا باسم routeAction… مربكة جدًا! دعنا نصلح ذلك)
على الرغم من أنني أقول… بشكل عام نحن نحاول التحرك نحو “إجراءات الإغلاق” مثل {{on \"click\" this.someFunction}} بدلاً من الأشياء المستندة إلى السلاسل النصية مثل {{action \"blah\"}} أو {{routeAction \"blah\"}}.