Propriété des objets Ember (getOwner, injections de services, etc.)

:warning: L’importation de getOwner depuis discourse-common/lib/get-owner est obsolète.

Pour accéder par exemple aux services, plusieurs méthodes sont à votre disposition.

  • Dans les composants/contrôleurs/routes, vous devriez utiliser les injections de service

    import { service } from "@ember/service";
    
    export default class Something extends Component {
      @service router;
    
  • Dans les cas où un service peut être indisponible (c’est-à-dire qu’il provient d’un plugin optionnel), il existe une injection optionalService

    import optionalService from "discourse/lib/optional-service";
    
    export default class Something extends Component {
      @optionalService categoryBannerPresence;
    
  • Dans les initialisateurs d’API, vous avez accès à api.container

    apiInitializer("1.0", (api) => {
      const router = api.container.lookup("service:router");
    
  • Et pour un remplacement direct du code existant, vous pouvez utiliser

    import { getOwner } from "@ember/application";
    
  • …ou si vous avez toujours besoin du shim de secours (dans un contexte autre qu’un composant/contrôleur/route/widget), utilisez

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

Ce document est contrôlé par version - suggérez des modifications sur github.

7 « J'aime »