المراقب على نموذج "controller:edit-category.tabs" لا يتم تشغيله

مرحباً،

أحاول ملاحظة التغييرات في نموذج وحدة التحكم EditCategoryTabs ولكن لسبب ما، لا يحدث شيء:

import { observes } from "@ember-decorators/object"
import { withPluginApi } from "discourse/lib/plugin-api"

function initialize(api) {
  api.modifyClass(
    "controller:edit-category.tabs",
    (Superclass) =>
      class extends Superclass {
        @observes("model.parent_category_id")
        onParentCategoryChange() {
          console.log("Apply some logic here when parent category changes");
        }
      }
  );
}

export default {
  name: "new-category-permissions",
  initialize() {
    withPluginApi(initialize);
  },
}

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

للسياق، أنا أستخدم Discourse 3.5.1 المبني بمشغل رسمي.

شكراً لمساعدتك!

كنت أتصفح الرابط الخاص بك، وتم نقل وحدة التحكم إلى /admin: discourse/app/assets/javascripts/admin/addon/controllers/edit-category/tabs.js at main · discourse/discourse · GitHub

لست متأكدًا من سبب عدم تشغيله. ربما لا يعمل @observes بشكل جيد في modifyClass؟

كبديل، ما رأيك في:

@action
saveCategory(data) {
  const oldParentId = this.model.parent_category_id;
  super.saveCategory(data);
  const newParentId = this.model.parent_category_id;

  if (oldParentId !== newParentId) {
    console.log("Apply some logic here when parent category changes");
  }
}
3 إعجابات

شكراً @Arkshine على إلقاء نظرة! لقد قمت بتحرير المنشور ليعكس موقع الملف الجديد.

لقد فكرت في تجاوز saveCategory أيضًا ولكن في هذه الحالة، أود تطبيق المنطق بمجرد تعديل النموذج. لقد حاولت حتى مراقبة التغيير في formData (دون نجاح).