إعادة تصنيف هذا على أنه خطأ.
لقد أضفت console.log في كود واجهة برمجة تطبيقات المكون الإضافي app/assets/javascripts/discourse/app/lib/plugin-api.js حتى يتم تسجيل كلما تم استدعاء modifyClass.
لقد قمت بإزالة جميع المكونات الإضافية الخارجية للتأكد من عدم وجود تعارض في مكان ما.
إعادة الإنتاج:
-
إنشاء منتدى فارغ على
stable(بدون Ember CLI). هذا لا يعمل أيضًا على tests-passed (بدون Ember CLI). لم أختبر هذا مع Ember CLI. -
إضافة مكون سمة مع هذا في Common - Head
#1 يعمل
api.modifyClass('model:user', {
pluginId: 'test-tc',
testFunction: function() {
return 1;
}
});
-
تحميل الصفحة الرئيسية
-
تعرض وحدة التحكم
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 فشل مع تحذير
- أضف سطرًا واحدًا إلى أعلى مكون السمة ليبدو كالتالي:
const userModel = api.container.lookup("model:user");
api.modifyClass('model:user', {
pluginId: 'test-tc',
testFunction: function() {
return 1;
}
});
- انتقل إلى موضوع، على سبيل المثال “Welcome to Discourse” وأعد تحميل الصفحة
- تعرض وحدة التحكم نفس سجلات “modifyClass called”
- تعرض وحدة التحكم تحذيرًا
\"model:user\" was already cached in the container. Changes won't be applied. - أدخل
Discourse.currentUser.testFunction()في وحدة التحكم - تتم طباعة
Uncaught TypeError: Discourse.currentUser.testFunction is not a function
#4 يعمل
- انقل سطر البحث إلى أسفل مكون السمة ليبدو كالتالي:
api.modifyClass('model:user', {
pluginId: 'test-tc',
testFunction: function() {
return 1;
}
});
const userModel = api.container.lookup("model:user");
- انتقل إلى موضوع، على سبيل المثال “Welcome to Discourse” وأعد تحميل الصفحة
- تعرض وحدة التحكم نفس سجلات “modifyClass called”
- أدخل
Discourse.currentUser.testFunction()في وحدة التحكم - تتم طباعة “1”
