Propiedad de objetos Ember (getOwner, inyecciones de servicio, etc.)

:warning: La importación de getOwner desde discourse-common/lib/get-owner está obsoleta.

Para acceder, por ejemplo, a los servicios, tienes un par de métodos a tu disposición.

  • En componentes/controladores/rutas, deberías usar inyecciones de servicio

    import { service } from "@ember/service";
    
    export default class Something extends Component {
      @service router;
    
  • En casos donde un servicio puede no estar disponible (es decir, proviene de un plugin opcional), existe una inyección optionalService

    import optionalService from "discourse/lib/optional-service";
    
    export default class Something extends Component {
      @optionalService categoryBannerPresence;
    
  • En inicializadores de API, tienes acceso a api.container

    apiInitializer("1.0", (api) => {
      const router = api.container.lookup("service:router");
    
  • Y para un reemplazo directo del código existente, puedes usar

    import { getOwner } from "@ember/application";
    
  • …o si aún necesitas el shim de respaldo (en un contexto que no sea componente/controlador/ruta/widget), usa

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

Este documento está controlado por versiones - sugiere cambios en github.

7 Me gusta