IT박스

AngularJS-서비스, 공장, 필터 등에 의존성 주입

itboxs 2020. 12. 11. 07:57
반응형

AngularJS-서비스, 공장, 필터 등에 의존성 주입


그래서 나는 내 각도 앱에서 사용하고 싶은 플러그인과 라이브러리를 가지고 있으며 (현재) 의존성 주입을 완전히 무시하는 방식으로 99 %의 앱에서 의도 한대로 이러한 함수 / 방법을 단순히 참조하고 있습니다.

예를 들어 날짜 형식 지정 및 유효성 검사를 처리하는 자바 스크립트 라이브러리 "MomentJS"가 있으며 컨트롤러, 서비스 및 필터에서 내 앱 전체에서 사용하고 있습니다. 내가 배운 방법 (AngularJS 사용)은 함수를 참조하는 서비스 (및 메서드)를 만들고 해당 서비스를 컨트롤러에 삽입하는 것입니다.

문제는 서비스에서 필터, 컨트롤러 및 기타 모든 구성 요소에서이 라이브러리를 참조해야한다는 것입니다. 그래서, 제 질문은 필터, 서비스 및 컨트롤러가 아닌 다른 모든 것에 종속성 주입을 어떻게 수행합니까?

이것이 가능한가? 이것이 유익한가요?

어떤 도움이라도 대단히 감사하겠습니다 :)


예, 필터 및 지시문에 종속성 주입을 사용할 수 있습니다.

전의:

필터:

app.filter('<filter>', ['$http', function(http){
    return function(data){
    }
}]);

지령:

app.directive('<directive>', ['$http', function(http){
    return {
        ....
    }
}]);

서비스:

app.factory('<service>', ['$http', function(http) {
  var shinyNewServiceInstance;
  return shinyNewServiceInstance;
}]);

완전성을 위해 다음은 인젝션을 사용한 서비스 예입니다.

app.service('<service>', ['$http', function($http) {
  this.foo = function() { ... }
}]);

이미 존재하는 답변이 정확하고 작동하지만 john papas angular 스타일 가이드 $injectY091 에서 서비스 사용을 선호합니다 .

필터:

app.filter('<filter', MyFilter);
MyFilter.$inject = ['$http'];
function MyFilter() {
  return function(data) {
  }
}

지령:

app.directive('<directive>', MyDirective);
MyDirective.$inject = ['$http'];
function MyDirective() {
  return {
    ...
  }
}

공장:

app.factory('<factory>', MyFactory);
MyFactory.$inject = ['$http'];
function MyFactory() {
  var shinyNewServiceInstance;
  return shinyNewServiceInstance;
}

서비스:

app.service('<service>', MyService);
MyService.$inject = ['$http'];
function MyService() {
  this.foo = foo;
  function foo(){
    ...
  }
}

참고 URL : https://stackoverflow.com/questions/15457720/angularjs-dependency-injection-in-services-factories-filters-etc

반응형