تعديل: تم إعادة تصنيفه كخطأ.
إعادة إنتاج كاملة أدناه.
أنا أستخدم api.modifyClass في مكون سمة.
على معظم الصفحات، يعمل هذا بشكل جيد، ولكن في بعض المواضيع، لا تتم إضافة الخاصية إلى نموذج المستخدم عند إعادة تحميل الصفحة. لا يمكنني العثور على سبب عمله في معظم المواضيع، ولكنه لا يعمل في البعض الآخر، أو ما تشترك فيه المواضيع التي لا يعمل فيها. هل يفهم أي شخص ما الذي أفعله بشكل خاطئ هنا؟
ملخص: إضافة api.container.lookup للنموذج، أسفل modifyClass، يعمل على تجاوز هذه المشكلة.
يا إلهي. قد أعرف!\n\nأعتقد أنك بحاجة إلى إضافة pluginId\n\n <script type=\"text/discourse-plugin\" version=\"0.1\">\n api.modifyClass('model:user', {\n pluginId: 'my-plugin', \n testProperty: function() {\n return 1;\n } \n });\n</script>\n\n\n\nإنه مطلوب في الإصدارات اللاحقة، لقد قدمت بالفعل طلبات سحب لعدد قليل من السمات أمس لإضافة هذا. قد أتحول أخيرًا إلى مطور إضافات/سمات.
لست متأكدًا مما إذا كانت هذه الأشياء متطابقة دلاليًا …
… نظريًا، يجب تقييم كليهما عند تحديث المتصفح، وبعد ذلك يجب أن يكون شرط السباق غير ذي صلة عند انتقال المسار حيث يجب أن يكون التعديل قد تم تطبيقه بالفعل …
حسنًا، لقد رأيت إشعارًا من منشور مفيد تم إزالته على ما يبدو في هذه الأثناء.
لم ينجح الاقتراح ولكنه احتوى على دليل ساعدني في حل هذه المشكلة.
إن إضافة المقتطف التالي أسفل الكود الذي لا يعمل قد حل المشكلات التي كنت أواجهها باستمرار. لقد اختبرت هذا على منتديات مستقلة متعددة، على كل من الإصدار المستقر وإصدارات tests-passed. أعتقد أنه يجب إعادة تصنيف هذا على أنه Bug …
لقد أضفت console.log في كود واجهة برمجة تطبيقات المكون الإضافي app/assets/javascripts/discourse/app/lib/plugin-api.js حتى يتم تسجيل كلما تم استدعاء modifyClass.
لقد قمت بإزالة جميع المكونات الإضافية الخارجية للتأكد من عدم وجود تعارض في مكان ما.
إعادة الإنتاج:
إنشاء منتدى فارغ على stable (بدون Ember CLI). هذا لا يعمل أيضًا على tests-passed (بدون Ember CLI). لم أختبر هذا مع Ember CLI.
تعرض وحدة التحكم modifyClass called for model:user _application-08d9058ddd37ba80992f770509f4919ad0738a17f14fb85167b1dc1f32f8b56e.js:23490:16 Object { pluginId: "test-tc", testFunction: testFunction() }
أدخل Discourse.currentUser.testFunction() في وحدة التحكم
تتم طباعة “1”
#2 فشل
انتقل إلى موضوع، على سبيل المثال “Welcome to Discourse” وأعد تحميل الصفحة
تعرض وحدة التحكم نفس سجلات “modifyClass called”
أدخل Discourse.currentUser.testFunction() في وحدة التحكم
تتم طباعة Uncaught TypeError: Discourse.currentUser.testFunction is not a function
#3 فشل مع تحذير
أضف سطرًا واحدًا إلى أعلى مكون السمة ليبدو كالتالي: