Ember 객체 소유권 (getOwner, 서비스 주입 등)

:warning: discourse-common/lib/get-owner에서 getOwner를 가져오는 것은 더 이상 권장되지 않습니다(deprecated).

예를 들어 서비스(services)에 액세스하려면 몇 가지 방법을 사용할 수 있습니다.

  • 컴포넌트/컨트롤러/루트에서는 서비스 주입을 사용해야 합니다.

    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 초기화자(initializers)에서는 api.container에 액세스할 수 있습니다.

    apiInitializer((api) => {
      const router = api.container.lookup("service:router");
    
  • 기존 코드를 직접 대체하려면 다음을 사용할 수 있습니다.

    import { getOwner } from "@ember/application";
    
  • …또는 여전히 폴백 shim이 필요한 경우(컴포넌트/컨트롤러/루트/위젯 컨텍스트가 아닌 경우)에는 다음을 사용하세요.

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

이 문서는 버전 관리됩니다. github에서 변경 사항을 제안할 수 있습니다.

7개의 좋아요