استراتيجية مثيرة للاهتمام لتمرير الخصائص عبر منافذ المكونات الإضافية للقوالب الأولية

سؤال سريع بخصوص هذا.

لاحظت شيئًا مثيرًا للاهتمام في TLT:

لا يوجد تمرير للنموذج هنا.

ومع ذلك، تمكنت من فعل هذا:

يمكنني فقط افتراض أن هذه استراتيجية مستقرة لتمرير خصائص النموذج لأسفل لأنها تُستخدم هنا - أي محاذير؟

أحد الأسباب التي جعلتني أجد منافذ الإضافات هذه أقل فائدة هو أنها غالبًا لا تمرر النموذج ذي الصلة بشكل صريح.

هل هذا النمط موثق في أي مكان؟ لم أره في أدلة Ember …

3 إعجابات

نظام “raw” هو شيء خاص بالخطاب، لذلك لن تجد شيئًا عنه في أدلة Ember.

يبدو أنها متعمدة جدًا في الكود الأساسي، لذلك أعتقد أنه من الآمن استخدامها:

في الواقع، لا يبدو أن منافذ “raw” لديها القدرة على تمرير أي شيء مثل “args” التي تجدها في منافذ الإضافات العادية. لذا فإن “context” هي الطريقة الوحيدة للمضي قدمًا.

لا تتردد في تقديم طلبات سحب (PRs) أساسية إذا شعرت أن أي بيانات مفيدة مفقودة في منافذ الإضافات العادية. إضافة وسائط جديدة إلى المنافذ آمنة نسبيًا، ومتوافقة مع الإصدارات السابقة، ولها تأثير ضئيل على الأداء، لذلك من غير المرجح أن نرفض.

7 إعجابات

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

جربت هذا في مكون سمة أقوم بترميزه:

{{~raw-plugin-outlet name="cool-outlet" args=(hash model=model)}}

لكنني أحصل على الخطأ: Compile Error: raw-plugin-outlet is not a helper

هل هناك أي شيء آخر أحتاج إلى القيام به لجعل هذا يعمل؟

لا يمكن استخدام raw-plugin-outlet إلا ضمن قوالب ‘raw’ (تلك التي تنتهي بـ .hbr). بالنسبة لقوالب ember العادية، يجب عليك استخدام {{plugin-outlet ...}}

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

تحرير: أدركت أن ما يلي أفضل لموضوعه الخاص. أدركت أيضًا أن المشكلة الرئيسية التي أواجهها هي استيراد إجراءات مكون إلى منفذ مكون إضافي. لقد طرحت سؤالًا حوله هنا:


هل هناك طريقة أبسط/قياسية لتمرير الوسائط بنجاح إلى منفذ مكون إضافي؟

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

إذا كان هناك في قالب المرجع التالي لمكون 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؟

استخدام مرجع مثل:
{{plugin-outlet name="cool-outlet" args=(hash model=model)}}
في composer.hbs لا يبدو أنه يعمل.