Observer bei "controller:edit-category.tabs" Modell nicht ausgelöst

Hallo,

Ich versuche, Änderungen am Modell des EditCategoryTabs-Controllers zu beobachten, aber aus irgendeinem Grund passiert nichts:

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("Wenden Sie hier eine Logik an, wenn sich die übergeordnete Kategorie ändert");
        }
      }
  );
}

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

Ich habe viele Dinge versucht, aber ich schaffe es immer noch nicht, den Beobachter auszulösen, wenn sich das Modell ändert. Habe ich etwas übersehen, das erklären könnte, wie das richtig geht?

Als Kontext verwende ich Discourse 3.5.1, erstellt mit dem offiziellen Launcher.

Vielen Dank für Ihre Hilfe!

Ich habe mir Ihren Link angesehen, und der Controller wurde nach /admin verschoben: discourse/app/assets/javascripts/admin/addon/controllers/edit-category/tabs.js at main · discourse/discourse · GitHub

Ich bin mir nicht sicher, warum er nicht ausgelöst wird. Funktioniert @observes möglicherweise nicht gut in modifyClass?

Was halten Sie alternativ davon:

@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("Wenden Sie hier eine Logik an, wenn sich die übergeordnete Kategorie ändert");
  }
}
3 „Gefällt mir“

Danke @Arkshine fürs Nachschauen! Ich habe den Beitrag bearbeitet, um den neuen Dateispeicherort widerzuspiegeln.

Ich habe auch darüber nachgedacht, saveCategory zu überschreiben, aber in diesem Fall würde ich die Logik anwenden, sobald das Formular geändert wird. Ich habe sogar versucht, Änderungen an den formData zu beobachten (ohne Erfolg).