programing

두 개의 Angular 사용 방법서로 다른 모듈의 동일한 이름을 가진 JS 서비스를 선택하십시오.

kakaobank 2023. 3. 13. 20:37
반응형

두 개의 Angular 사용 방법서로 다른 모듈의 동일한 이름을 가진 JS 서비스를 선택하십시오.

AngularJs용 모듈이 두 개 있다고 가정합니다.foo그리고.bar두 서비스 모두 Catalystand라는 이름의 서비스를 정의합니다.baz.

어플리케이션에서는 다음과 같이 말하고 있습니다.

var app = angular.module('app', [ 'foo', 'bar' ]);

그럼 제가 한번 써볼게요.baz를 사용하여 컨트롤러 내의 서비스

app.controller('blaController', [ '$scope', 'baz', function($scope, baz) {
  // ...
}]);

사용하는 두 가지 서비스 중 어떤 것을 정의하려면 어떻게 해야 합니까?정식 이름 같은 게 있나요?

서비스 로케이터는 이름(angularjs 가이드 DI)으로 서비스를 검색합니다.단, Angular에서의 "네임스페이스" 서비스JS:

현재 AngularJS는 서비스에 대한 네임스페이스 충돌을 처리하지 않으므로 이름이 같은 서비스를 사용하는 두 개의 모듈이 있고 앱에 두 모듈을 모두 포함하면 하나의 서비스만 사용할 수 있습니다.

완전 수식명칭은 '수기'로 만들 수 있을 것 같습니다.서비스명칭foo.baz그리고.bar.baz평범하지 않고baz일종의 자기 기만이에요게다가 이렇게 쓴다고 해서 네임스페이스가 진짜가 되는 것은 아니지만, 코드를 읽는 다른 사람이 그렇게 생각할 수도 있다.

같은 이름의 서비스가 2개 있는 경우 로컬모듈에서 사용할 때 구별해야 합니다.이 기능의 구조를 이해하기 위해서, 이하의 몇개의 코드를 참조해 주세요.

2개의 Util 서비스가 있으며, 이를 차별화할 필요가 있습니다.

angular
  .module('module1', [
  ])
  .service('UtilService', UtilService)
  .service('another.UtilService', UtilService)
  .name;

컨트롤러 파일에서는 다음과 같이 간단하게 주입할 수 있습니다.

export class Controller {
  public static $inject: string[] = ['UtilService', 'another.UtilService'];

constructor(
    private utilService: UtilService,
    private anotherUtilService
  ) {
     console.log(this.utilService) // will print the main util service methods
     console.log(this.anotherUtilService) // will print the another util service 
     methods
  }

언급URL : https://stackoverflow.com/questions/17862209/how-to-use-two-angularjs-services-with-same-name-from-different-modules

반응형