أعتقد أن هذه قد تكون مشكلة في Discourse، لكنني لست متأكدًا. ربما أفعل شيئًا خاطئًا.
لدي إضافة تضيف معلومات إلى موصل user-card-post-names.
Handlebars:
Javascript:
والذي بدوره يستدعي هذا Javascript الذي يقوم بمعظم العمل:
تفاصيل المشكلة:
ضمن كود JS السابق هذان السطران:
var version = userModel.custom_fields && userModel.custom_fields["directoryopus_link_version"];
var edition = userModel.custom_fields && userModel.custom_fields["directoryopus_link_edition"];
ثم يقوم باختبار if (version || edition) { ... وينشئ بعض السلاسل النصية (opusLinkClass, opusLinkIcon, opusLinkText) اعتمادًا على النتيجة، والتي يقوم بتخزينها بعد ذلك:
component.set("opusLinkClass", opusLinkClass);
component.set("opusLinkIcon", opusLinkIcon);
component.set("opusLinkText", opusLinkText);
يتم بعد ذلك استخدام هذه السلاسل النصية في ملف handlebars في بداية هذا المنشور.
لا توجد أبدًا أخطاء أو تحذيرات في نافذة سجل المتصفح، ولكن في بعض الأحيان يحدث هذا بشكل خاطئ.
أنا أختبر بحساب لديه كلا الحقلين المخصصين custom_fields، لذلك يجب أن يذهب اختبار if (version || edition) دائمًا إلى الفرع الأول، وليس else if (!viewingStaff) الذي يليه.
ومع ذلك، فإنه يذهب أحيانًا إلى الفرع الثاني، مما يعني أنه لم يتم تعيين version و edition.
هذا لا يحدث عادةً، ولهذا أعتقد أنها قد تكون مشكلة في Discourse.
يبدو أنه يحدث فقط إذا قمت بإنشاء موضوع جديد ثم الرد عليه، أو إذا قمت بتحرير رد قمت به للتو. يبدو الأمر وكأن كائن userModel لم يتم تهيئته بشكل صحيح عند تشغيل الموصل في بعض المواقف، ربما بسبب حالة سباق في مكان ما؟
يبدو أنه يحدث مرة واحدة لكل موضوع. إذا قمت بتحديث الصفحة باستخدام F5، فكل شيء على حد سواء مرة أخرى، ويستمر في كونه كذلك لهذا الموضوع. (على الأقل بقدر ما أستطيع أن أقول. يبدو الأمر شبه عشوائي، لذلك من الممكن أنني لم أرَ ذلك يحدث مرة أخرى لنفس الموضوع.)
شكرًا لوقتك وأي اقتراحات.