2014-11-18 3 views
17

모듈 종속성을 만든 후 추가 할 수 있는지 알고 계십니까? 다음과 같은 것 :생성 후 Angular 모듈에 종속성 추가

// init module in file A 
angular.module("myApp", []); 

// retrieve module in file B and add new dependencies: 
mod = angular.module("myApp"); 
// now I want to add an 'ngResource' dependency to mod 
// ??? 

편집 : 이상한 질문으로 보일 수 있습니다. 내가 구성 요소 기반의 애플 리케이션 조직에서 일하고 또한 하위 구성 요소가 자체 모듈을 정의하지 않고 상위 구성 요소 모듈에 종속성을 추가 할 수 있는지 확인합니다. 뭐 그런 :

app/ 
components/ 
    |__componentA/ 
     |__app.js // initializes component A module 
     |__subcomponentA/ 
       |__app.js // want to add subcomponentA dependencies to componentA module from here 

단순히 선언 내 다른 모든 subcomponentA가 componentA 모듈에 직접 종속성, 그러나보기의 조직 관점에서, 나는 subcomponentA 디렉토리 내에 이러한 종속성을 유지하는 것을 선호 것, 그래서 나중에 결정하는 경우 응용 프로그램에서 하위 구성 요소 A를 제거하려면 componentA 모듈에서 종속성을 제거하지 않아도됩니다. subcomponentA와 관련된 모든 것이 subcomponentA 디렉토리 안에 그룹화되도록하고 싶습니다. 하지만 내 빌드 스크립트는 subcomponetA가 있기 전에 componentA 코드가 처리되도록합니다.

이것으로 찌르는 사람 모두에게 감사드립니다.

답변

0

나는 이것이 가능하지 않다고 생각합니다. 그러나, 나는 틀린 입증되고 싶다.

내 경험에 의하면 (그리고 Angular documentation에 따라) 모듈을 초기화 할 때만 모듈 종속성을 선언 할 수 있습니다. 응용 프로그램이 부트 스트랩 될 때까지 종속성이 완전히 설정되지 않는다는 점은 주목할 가치가 있습니다. 어쨌든 원하지 않는 부작용이있을 수있는 전체 앱을 재부팅 할 수있는 방법이 없다면 내가 아는 한 실행중인 애플리케이션에 의존성을 추가하는 것은 불가능합니다.

편집 : 사실 .... 나는 이것을 시도한 적이 없지만 실제로는 원래 생각했던 것보다 훨씬 더 간단 할 것입니다.

파일 A : 우리는 다음을 시도 할 수

window.myApp_dependencies = []; // Add dependencies to the global scope. 

angular.module('myApp', dependencies); 

파일 B :

var mod = angular.module("myApp"); 

window.myApp_dependencies.push('ngRoute'); 

이 전역 범위에 변수를 만들 강제로 정말 적합하지 않습니다. 그러나 모듈을 사용하여이를 수행 할 수 있습니다. 이 경우 앱이 실제로 시작될 때까지만 종속성이 변경 될 수 있으므로 파일간에 종속성을 분리 할 수는 있지만 런타임에 변경할 수는 없습니다.

나는 이것이 작동하는지 모르겠다. 나는 그것을 내일 시험해 볼 예정이다.

+2

그래서 작동 했습니까? –

+0

작동합니다. 방금 각도 1.5.0을 시도했습니다. – Stan

-2

이상한 질문하지만 여전히 당신이 달성하려고하는 특정 모듈 또는 한 페이지에이 종속성을 사용하고자처럼/스파/의존성 주입

사용 사례가 뭔가 AngularJS와의 전망에 뭔가 잘못이다. 그게 왜 다른 위치가 아닌 한 위치에 주입하려고하는 이유입니다.

하지만, 이미

를 선언 다른 하나는 말할 것이 다른 것 해당 모듈 reinitiallized 경우이 모듈의 동일한 이름을 사용 becuase 응용 프로그램에 대한 두 개의 서로 다른 범위를 만들 것하고, •

파일을

angular.module("myApp", []); 
은 정의되고 파일 B에

mod = angular.module("myApp", ['ngResource']); 

은 그래서 이것은 하나 개의 AP에 같은 이름을 가진 두 개의 서로 다른 응용 프로그램을 가지고 원인이 plication과 그 다른 파일에 같은 이름을 가진 두 애플 리케이션 그래서 그 응용 프로그램에 두 개의 다른 각도 모듈을 가지고 같은.

두 번째 옵션 : 응용 프로그램에서 동일한 모듈을 사용하고 한 지점에 주입하고이를 사용하려는 모든 컨트롤러에이 모듈을 컨트롤러의 인수로 삽입하십시오.

희망이 도움이됩니다.

24

나는 이것을 위해 다음의 방법을 사용하고 나를 위해 잘 작동한다.

var app = angular.module("myApp", []); 

angular.module("myApp").requires.push('ngResource'); 
+0

https://jsfiddle.net/cattails27/6mcck6pp/ 테스트를 거쳐 작동합니다. 놀랍게도, 이것이 존재한다면 이것은 각진 모듈의 지저분한 정렬의 필요성을 제거합니다 ... – jkris

+0

어떤 각도 버전을 사용하고 있었습니까? –

+0

@SQLandJavaLearner jsfiddle에서 그는 Angular Version 1.4.8을 사용합니다. – Necroqubus

관련 문제