Objekteigentümerschaft in Ember (getOwner, Service-Injektionen usw.)

:warning: Das Importieren von getOwner aus discourse-common/lib/get-owner ist veraltet.

Um beispielsweise auf Dienste zuzugreifen, stehen dir einige Methoden zur Verfügung.

  • In Komponenten/Controllern/Routen solltest du Service-Injektionen verwenden

    import { service } from "@ember/service";
    
    export default class Something extends Component {
      @service router;
    
  • In Fällen, in denen ein Dienst nicht verfügbar sein kann (z. B. weil er von einem optionalen Plugin stammt), gibt es die optionalService-Injektion

    import optionalService from "discourse/lib/optional-service";
    
    export default class Something extends Component {
      @optionalService categoryBannerPresence;
    
  • In API-Initializierern hast du Zugriff auf api.container

    apiInitializer((api) => {
      const router = api.container.lookup("service:router");
    
  • Und für eine direkte Ersetzung von vorhandenem Code kannst du Folgendes verwenden

    import { getOwner } from "@ember/application";
    
  • … oder, falls du weiterhin auf die Fallback-Shim-Logik angewiesen bist (in einem Kontext außerhalb von Komponenten/Controllern/Routen/Widgets), verwende

    import { getOwnerWithFallback } from "discourse-common/lib/get-owner";
    

Dieses Dokument wird versioniert verwaltet – Vorschläge für Änderungen kannst du auf GitHub einreichen.

7 „Gefällt mir“