كيفية إضافة إجراءات المكون إلى منفذ إضافي؟

لقد كنت أحاول الإشارة إلى مكون موجود في منفذ إضافي (plugin-outlet)، ولكني أواجه أخطاء باستمرار. ويبدو أن المشكلة الرئيسية تتعلق بالإجراءات المرتبطة بالمكون. هل هناك طريقة صحيحة للإشارة إلى إجراءات مكون آخر في منفذ إضافي؟

كنت أعتقد أنه في منفذ إضافي، مجرد الإشارة إلى المكون (على سبيل المثال، {{component-name action=(action \"doSomething\")...}}) سيعمل على جلب كل الكود ذي الصلة لإجراءات هذا المكون. ولكن يبدو أن هذا ليس هو الحال - لأنني أواجه باستمرار مجموعة متنوعة من الأخطاء حول أشياء معينة غير معرفة، وتعريفات غير صحيحة، وأشياء أخرى تشير إلى أن جافاسكريبت الإجراء لا يتم جلبه إلى منفذ الإضافة بشكل صحيح.


على سبيل المثال:

إذا كان هناك في قالب ما الإشارة التالية إلى المكون composer-action-title، هكذا:
composer.hbs:

 {{composer-action-title
       model=model
        openComposer=(action \"openComposer\")
        closeComposer=(action \"closeComposer\")
        canWhisper=canWhisper
        tabindex=8
  }}

وأردت إضافة منفذ إضافي يحتوي - في ذلك المنفذ الإضافي - على نفس الكود، هكذا:

connectors/cool-outlet/cool-outlet.hbs:

 {{composer-action-title
       model=model
        openComposer=(action \"openComposer\")
        closeComposer=(action \"closeComposer\")
        canWhisper=canWhisper
        tabindex=8
  }}

ما الذي أحتاج إلى القيام به للسماح لمنفذ الإضافة cool-outlet الخاص بي بالقدرة على الإشارة بنجاح إلى المكون composer-action-title، بما في ذلك إجراءات “openComposer” و “closeComposer”؟

أعتقد أنني فهمت الفكرة الأساسية لهذا - على الرغم من أنني سأكون سعيدًا بسماع أي اقتراحات أخرى.

لتمرير الإجراءات والوسائط الأخرى إلى منفذ المكون الإضافي، يمكنك إضافتها إلى مرجع منفذ المكون الإضافي تمامًا كما يمكنك مع مرجع إلى مكون.

لكن احذر من تمرير الوسائط الصحيحة - أي مراجع المتغيرات الصحيحة.

باستخدام مثالي: إليك مرجع مكون يظهر في القالب composer.hbs:

{{composer-action-title
       model=model
       openComposer=(action "openComposer")
       closeComposer=(action "closeComposer")
       canWhisper=canWhisper
       tabindex=8
  }}

إذا كنت ترغب في استبدال هذا المرجع بمرجع لمنفذ مكون إضافي (مع توخي الحذر الواضح إذا كنت تقوم بتحرير ملف قالب، نظرًا للصعوبة المتزايدة في صيانة الأشياء مع تغير الخطاب)، وتريد أن يشير منفذ المكون الإضافي نفسه إلى مكون composer-action-title، يمكنك وضع هذا في composer.hbs:

{{plugin-outlet name="cool-outlet" args=(hash
       model=model
       openComposer=(action "openComposer")
       closeComposer=(action "closeComposer")
       canWhisper=canWhisper
       tabindex=8
    )
}}

ثم في connectors/cool-outlet/cool-outlet.hbs، يجب أن يعمل هذا للإشارة إلى مكون composer-action-title:

{{composer-action-title
       model=model
       openComposer=openComposer
       closeComposer=closeComposer
       canWhisper=canWhisper
       tabindex=8
  }}

لاحظ المتغيرات هنا، فهي المتغيرات المعينة في ملف composer.hbs.