Ember对象所有权(getOwner、服务注入等)

:warning:discourse-common/lib/get-owner 导入 getOwner 已弃用。

您可以使用以下几种方法来访问服务等。

  • 在组件/控制器/路由中,您应该使用服务注入

    import { service } from "@ember/service";
    
    export default class Something extends Component {
      @service router;
    
  • 在服务可能不可用的情况下(例如,它来自可选插件),可以使用 optionalService 注入

    import optionalService from "discourse/lib/optional-service";
    
    export default class Something extends Component {
      @optionalService categoryBannerPresence;
    }
    
  • 在 API 初始化器中,您可以访问 api.container

    apiInitializer("1.0", (api) => {
      const router = api.container.lookup("service:router");
    });
    
  • 作为现有代码的直接替代,您可以使用

    import { getOwner } from "@ember/application";
    
  • …或者,如果您仍然需要在非组件/控制器/路由/小部件上下文中使用回退垫片,请使用

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

本文档受版本控制 - 在 github 上建议更改。

7 个赞