2014-10-21 1 views
26

제공자로부터 $window에 액세스하고 싶습니다. (mymodule.provider(...)) BUT 구성시 이러한 종속성이 필요합니다 (따라서 $get에 그러한 종속성을 넣는 것은 유용하지 않습니다). 현재

내가 $window에 액세스하지 않으며, 내가 설정 시간에 같은 의존성을 필요로하는 이유는 내가 창에서 일정 인 $window.STATIC_URL에 접근 할 필요가 있기 때문이다, 나는 상태 '템플릿을 구성하는 데 사용 ($stateProvider).

현재 코드입니다 : 내가 두 설정에서 같은 값을 필요로하고 나는 그것을 사용 (실행 시간 때문에

mymodule.provider('StaticUrl', function() { 
    this.url = function() { return window.STATIC_URL || 'static'; }; 
    this.$get = this.url; 
}); 

이 더 그냥 상태를 설정하는 것보다 그래서 나는 컨트롤러와 같은 URL을 필요로 할 때 , 종속성으로 가져옵니다).

//config 
mymodule.config(['StaticUrlProvider', '$stateProvider', function(sup, $sp){ 
    //... 
    $sp.state('main', { 
     templateUrl: sup.url() + 'path/to/template.html' 
    }); 
    //... 
}]); 
//run-time (in this case: a controller) 
mymodule.controller('MyController', ['$scope', 'StaticUrl', function($s, su) { 
    var buildingType = /*a complex expression here*/; 
    $s.buildingPicture = $su + 'path/to/building/pics/' + buildingType + '.png'; 
}]); 

기존 데이터 세트가 주어지면 제공해야하는 STATIC_URL 아래에있는 각 항목에 대한 그림이 있습니다. 그래서 이것은 두 단계에서 같은 상수를 사용한다는 것을 의미합니다.

어떻게하면 더 넓은 각도로 표현할 수 있습니까 (즉 글로벌에 의존하지 않고). moduleerr을 제기하지 않고 공급자로부터 $window에 액세스 할 수있는 방법이 있습니까?

+2

시도를 호출 – harishr

답변

50

를 주입 $windowProvider 및 $ windowProvider를 주입 $windowProvider.$get()

관련 문제