6

btford.socket-io 모듈을 사용하여 서버와 상호 작용하는 angularJS에 서비스를 만들었습니다. 서비스에서 현재 앵귤러 내부에서 사용하는 API를 구현 했으므로 나중에 애플리케이션 확장을 위해 각도 범위 밖의 API에 액세스해야합니다. 앞으로는 컨트롤러 및 기타 물건을 만들 필요없이 함수를 호출 할 수 있습니다. 나는 범위 변수 내부 전체 컨트롤러를 저장하여 컨트롤러Angularjs 범위 외부의 서비스 함수

var myController = angular.element($('body')).scope().myController; 

이했던 순간

. 서비스와 동일한 작업을 수행 할 수 있는지 궁금합니다.

답변

11

방법에 대해 :

angular.element(document.body).injector().get('MyService');

일반적으로 좋지 않아 연습. 그러나 때로는 그것의 필요.

참고 : document.body 당신의 각 응용 프로그램이

당신이 공장을 통해 각도와 외부 API를 '폐쇄'되고 고려해 볼 수 있습니다 또 다른 한가지에 장착되어있는 요소입니다.

  • 예 : 각도 팩토리에서 전역 또는 네임 스페이스 클래스 또는 api를 반환하십시오.

이것은 본질적으로 당신을위한 각도입니다. 그러나 먼저 각도 내부에 참조를 작성하고이를 추출해야하는 대신 외부에서 작성하여 DI를 공장 또는 값으로 등록하십시오.

+0

작품 : 나는 각도 범위 바깥에서 일하고 있기 때문에 이것이 나쁘다는 것을 안다. angularjs를 프레임 워크로 사용하여 여러 가지 지시문을 작성하고 있으며 동시에 외부 개발자 API에 서비스를 사용하고 싶습니다. 대안이 없다고 생각합니다. anglejs와 분리 된 API를 다시 작성하는 것이 가능할 수도 있지만 아키텍처 설계에 영향을 미칩니다. – giulio