تعديل خاصية style بشكل ديناميكي على عنصر قائمة الموضوع

إخلاء مسؤولية: سعيد جدًا بالاتجاه هنا وشكراً على كل العمل حتى الآن حيث أن هناك الكثير من القوة في النظام الجديد. نحتاج فقط إلى التأكد من أننا نحتفظ ببعض القدرات المكافئة؟ …

في المكون الخاص بي، TLP، أقوم حاليًا بتعيين سمة النمط للعنصر الخارجي لقائمة الموضوع ديناميكيًا:

  • تعيين لون background: إلى قيمة RGB فريدة لمطابقة اللون السائد للصورة. يجب القيام بذلك بشكل مثالي في حلقة Ember.

أقوم أيضًا بتعيين grid-row-end لتحديد حجم عنصر الفسيفساء بسرعة كبيرة. هذا سريع وفعال للغاية ويتجنب الكثير من جافا سكريبت. ومع ذلك، لهذا أستخدم جافا سكريبت لأنه يعتمد على الأحجام النهائية في DOM.

حاليًا، تتعايش هذه الأمور بسعادة.

image

<tr> style="background: rgb(56, 10, 58); grid-row-end: span 48;" data-topic-id="23321" id="ember168" class="topic-list-item category-uncategorized tag-inforunners visited white-text has-thumbnail tiles-grid-item ember-view" data-is-last-viewed-topic="true">

كلاهما تخصيصان حاسمان لمكون السمة وبدونهما، لن يكون مدعومًا.

يتم تحقيق هذا التعديل الأول على النمط حاليًا من خلال ربط سمة نمط مباشر مع modifyClass، وهو ما أفهمه أنه طريقة مهملة.

هل من الممكن وجود واجهة برمجة تطبيقات في العالم الجديد لهذا من فضلك؟

أم ربما فاتني طريقة موجودة للتغلب على هذا؟

ومع ذلك، هذا ليس شيئًا أعتقد أنه يمكن تحقيقه باستخدام الفئات.

3 إعجابات

هل هو كذلك؟ :confused: أليس مجرد طلب للتحديث إلى بناء فئة أصلي؟

أنا أتبع هذا

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

أوه ، فهمت. اعتقدت أن هذا يعني هذا الترقية.

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

سيكون من الجيد الحصول على توضيح.

  • هل modifyClass لا يزال صالحًا؟ (تم تحديث الصيغة للتو - قد يكون من الجيد الإشارة إلى هذا الدليل إذا كان الأمر كذلك)
  • هل لا يزال بإمكاني استخدام ذلك للوصول إلى سمة النمط للعنصر المحيط؟

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

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

أوه، أنت على حق. هناك إشعار إهمال في وحدة التحكم.

إشعار الإهمال: تعديل ‘component:topic-list-item’ باستخدام ‘modifyClass’ مهمل. استخدم محول القيمة ‘topic-list-columns’ وواجهات برمجة تطبيقات المكون الإضافي topic-list الجديدة بدلاً من ذلك.

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

modifyClass بحد ذاته ليس مهجورًا. إنها طريقة تخصيص محفوفة بالمخاطر، ويجب عليك اتخاذ الاحتياطات عند استخدامها (كما هو موضح في المستند الذي ربطه @don)، ولكن ليس لدينا أي خطط وشيكة لإزالته.

السبب في أننا نطبع رسالة إهمال للمكونين component:topic-list و component:topic-list-items هو أن هذين المكونين هما التنفيذ القديم لقائمة الموضوعات، ولا يتم استخدامهما عند تمكين قائمة الموضوعات اللامعة. الآن، لدينا مجموعة من المكونات اللامعة مثل components/topic-list/item.

لذلك، من الناحية الفنية، يمكنك استخدام modifyClass على هذه المكونات الجديدة. ولكن، نظرًا لأنها مكونات لامعة، فلن تتمكن من تعديل علامة النمط عبر فئة JS، لذلك لن يساعد ذلك في حل المشكلة في المنشور الأصلي.

لدينا وضع “فسيفساء” مشابه في مكون سمة d-topic-thumbnails الرسمي، لذا يجدر النظر في كيفية تنفيذه. نضيف فئة فريدة لكل “صف” من قائمة الموضوعات:

ثم نقوم بعرض علامة <style> ديناميكية في منفذ إضافي منفصل، والتي تستهدف أسماء الفئات هذه:

ومع ذلك… هذا معقد بعض الشيء، لذلك ربما يجب أن ننظر في إضافة valueTransformer محدد للسماح بتغيير السمة style=. إنها صعبة قليلاً بسبب حماية Ember من XSS / htmlSafe على هذه السمة… ولكنني متأكد من أنه يمكننا جعل شيئًا ما يعمل.

3 إعجابات

شكراً لاهتمامك بهذا يا ديفيد، سيكون ذلك رائعاً!

ديفيد، لدي طلب آخر، هل سيكون من الممكن الربط بأحداث Glimmer مثل didInsert، didUpdate، willDestroy عبر واجهة برمجة التطبيقات الجديدة؟

أريد تشغيل بعض جافاسكريبت إضافية عند didInsert، على سبيل المثال، وهو ما يتم التعامل معه حاليًا بواسطة @on و modifyClass.

(يسعدني أن أجعل هذا موضوعًا جديدًا بالمناسبة)

سأجرب تقنيتك هنا في الوقت الحالي:

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

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

بالنسبة لمناقشة سمة style=، لقد قمت بإنشاء هذا الطلب. سأحاول الحصول على مراجعته/دمجه:

3 إعجابات

شكراً. حتى الآن كل شيء على ما يرام مع تقنيتك الحالية، لقد قمت بتخصيصها لـ TLP ويبدو أنها تعمل بشكل جيد. سأعود إذا وجدت أي ثغرات محتملة أخرى.

رائع! سأكون جاهزًا له بحلول الوقت الذي يتم فيه دمج ذلك، أتطلع إليه! شكراً ديفيد!

3 إعجابات

يعمل بشكل رائع، شكرًا مرة أخرى! :rocket:

إعجابَين (2)

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.