2013-09-30 3 views
4

많은 사용자 지정 지시문이있는 웹 응용 프로그램을 작성하고 있습니다. 각 모듈에 대해 등록 된 모든 지시문을 볼 수있는 방법이 있습니까?AngularJS에 등록 된 사용자 지정 지시문을 나열하십시오.

+0

[AngularJS 모듈에 선언 된 지시문/컨트롤러 목록] (http://stackoverflow.com/questions/18986870/list-declared-directives-controllers-in-angularjs-module) –

답변

8

모듈에는 _invokeQueue가 있으며이 모듈에는 모듈의 내용이 들어 있습니다. 이 같은 기능 :

function Directives(module) { 
    var directives = []; 
    var invokes = angular.module(module)._invokeQueue; 
    for (var i in invokes) { 
     if (invokes[i][1] === "directive") directives.push(invokes[i][2]); 
    } 
    return directives; 
} 

은 모듈을 통해 실행하고 지시로 태그 된 호출 큐의 각 요소를 잡아 것입니다.

여기에 fiddle을 가지고 놀 수 있습니다.

편집 : 나는 당신이 원하는 경우가 확실하지 않기 때문에 이것을 약간 더 일반적인 것으로 만들었습니다.

모듈에는 다른 모듈이 포함될 수 있으므로 하위 모듈에있는 지시문을 재귀 적으로 수집 할 수 있습니다. http://jsfiddle.net/V7BUw/2/. 이 도움이

for (var j in module.requires) { 
    Directives(module.requires[j], directives); 
} 

희망 :

의 주요 차이점은뿐만 아니라 배열이 필요합니다 당신이 모든 모듈에 대해 반복해야합니다!

+0

이것을 작성해 주셔서 감사합니다. private 인 것처럼 보이지만,'_invokeQueue' 배열의 원소들은 배열이라는 것이 흥미 롭습니다. 당신은 마술처럼 두 번째 필드가 어떤 유형의 객체인지 알 필요가 있습니다. 왜이 비밀 필드를 설명하기 위해 키가있는 일반 객체를 사용하지 않았는지 확실하지 않습니다. – jelinson

+0

또한 바이올린에 대한 간단한 설명 - 바이올린이 지정된 결과 패널을 가지고 있기 때문에 HTML 출력이 콘솔 로그보다 더 잘 작동한다고 생각합니다. – jelinson

관련 문제