2017-12-28 3 views
0

값을 해결하기 위해 외부 서비스 내의 $transition$ 개체에 액세스하려고합니다.각도 -Ui 라우터 외부 서비스에서 해결

$stateProvider.state(
    'detailView.showDocument', { 
    url: '/:documentId', 
    views: { 
     'sidebar': { 
     component: 'thumbnailView', 
     }, 
     'main': { 
     component: 'mainView', 
     } 
    }, 
    params: { 
     document: null 
    }, 
    resolve: { 
     document: 'resolveDocumentService', 
    } 
    } 
); 

내 서비스는 다음과 같습니다 :

내 상태 정의처럼 보이는 $transition$ 객체가 주입 할 수 없기 때문에

service.$inject =[ 
    '$transition$', 
]; 

function service(
    $transition$ 
) { 
    // do something 
} 

이 오류를 제공합니다. 그렇다면 $uiRouterGlobals을 사용하는 해결책을 찾았지만 조금 이상하게 보입니다.

$transition$ 개체가 서비스 내에서 전환 값을 확인할 수없는 이유가 있습니까?

resolve: { 
    document: [ '$transition$', function($transition$) { 
    // write your logic here as `$transition$` will be available here 
    } ] 
} 

이 함수 주사하고, UI 라우터를 자동으로 요구 의존성 주입 다음과 같이

+2

아마도 XY 문제 일 수 있습니다. $ transition $은 로컬 의존성이며 로컬 인 이유는 현재 상태에 로컬이라는 것입니다. 당신의 예제에서 resolveDocumentService는 싱글 톤이 될 것이고 한 번 평가 될 것입니다. 따라서 $ transition $은 아무 쓸모가 없습니다. 거기에 $ transition $로 무엇을 할 작정입니까? – estus

+0

@Martin 사용중인 Angular-ui-router 버전은 무엇입니까? –

답변

0

는 @estus '주석 외에, 구성을 변경할 수있다. 또한 특정 상태를 구성 중이므로 XY 문제가 발생하지 않습니다.

+0

AFAIK resolve는 직접 종속성 이름을 가질 수 있습니다. –

0

내 실수는 물론 서비스가 싱글 톤이라는 것입니다. 서비스 키를 사용하는 대신 정상적인 기능으로 해결했습니다.