أواجه صعوبة في تجاوز الدالة save() في صفحة شارة المسؤول

أنا أكتب إضافة لتوسيع وظائف الشارات. عندما يتم الضغط على زر “حفظ” في صفحة الشارات الإدارية، أريد تنفيذ بعض التعليمات البرمجية الإضافية.

جافاسكريبت ديسكورس:

ديسكورس hbs:

الكود الخاص بي discourse/plugins/discourse-badge-extension/assets/javascripts/discourse/initializers/modify-admin-badges-show-controller.js:

import { withPluginApi } from 'discourse/lib/plugin-api';

export default {
  name: 'modify-admin-badges-show',

  initialize() {

    withPluginApi('0.8', api => {
      api.modifyClass('controller:admin-badges/show', {
        pluginId: 'discourse-badge-extension',
        actions: {

          save() {
            console.log("Custom pre-save logic triggered");
            alert("Pre-save logic");

            this._super(...arguments); // Call the original save method

            console.log("Post-save logic triggered");
            alert("Post-save logic");
          },
        }
      });

      alert("Hello! I am an alert box!!");
    });
  }
};

إنها تهيئة.

  • يتم تشغيل مربع التنبيه "Hello! I am an alert box!!"، مما يشير إلى أن الكود يتم تشغيله عند إعادة التحميل.
  • لا يتم تشغيل أي من سطور console.log أو التنبيهات عند الحفظ، مما يشير إلى أن التجاوز لا يعمل؟
  • اسم المتحكم لا يعطي خطأ controller:admin-badges/show (ولكن إضافة خطأ عن قصد يعطي خطأ، مما يوحي بأنني أستهدف متحكمًا حقيقيًا)

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

مرحباً @piffy. للأسف، هذا عدم توافق مع “صيغة الفئة الأصلية” في JS، ووظيفة reopen() في EmberObjects، والمُزخرف @action (الذي ينشئ تقنياً “getter” أصلي في JS).

أخشى أنه ليس لدي اقتراح فوري لجعل هذا التجاوز المحدد يعمل، ولكن نحن نعمل على حل أكثر قوة للمستقبل.

اعتماداً على ما تحاول القيام به، ربما يكون الربط بوظيفة “الحفظ” في نموذج الشارة ممكناً؟

3 إعجابات

شكراً على الإجابة السريعة والشاملة. سأبحث في وظيفة الحفظ الأخرى تلك.

3 إعجابات

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