2014-05-15 1 views
2

Hot Towel 템플릿을 기반으로하는 Angularjs 앱 (ui-router 사용)을 쓰고 있습니다. 기본 레이아웃은 탐색 탭이있는 머리글 영역과 사용자의 드롭 다운 목록 및 그 아래의 내용 영역입니다.

은 HTML은 다음과 같이 기본적으로 같습니다 : 사용자 이름/detail1, /: 이름/detail2

<header> 
    <div data-ng-include="'header.html'"></div> 
</header> 
<div ui-view></div> 

내가 내 URL을 양식 /의 싶어요. 드롭 다운 목록에서 사용자를 선택하면 콘텐츠 탭에 선택한 사용자의 정보가 표시됩니다.

문제 : 내 헤더의 컨트롤러에서

, 나는 내가 드롭 다운 목록에서 해당 항목을 선택할 수 있도록 현재 사용자를 알아야합니다,하지만 난에 액세스 할 수 없습니다 : 사용자 이름 매개 변수를. $ stateParams가 비어 있습니다. docs는 다음과 같이 말합니다.

$ stateParams 객체에는 해당 상태로 등록 된 매개 변수 만 포함됩니다.

내 머리글은 특정 상태와 관련이 없습니다. 그래도 이처럼 헤더에서 탐색 컨트롤을 사용하는 것은 내가하려고하는 일부 엉뚱한 가장자리 케이스처럼 보이지 않습니다. $ URL을 사용하여 사용자 이름을 파싱하고 사용자 이름을 파싱 할 수 있음을 알고 있지만 이는 해킹 된 것 같습니다.

나는 명백한 것을 놓치고 있습니까? 아니면 잘못된 방향으로 가고 있습니까?

+0

'$ stateChangeStart'를 사용하면'$ stateParams'를 검색 할 수 있습니까? – Jmorvan

답변

0

과 같이 모듈의 실행 기능에 $rootScope$state$stateParams을 추가

angular.module('<module-name>').run(function($rootScope, $state, $stateParams) { 
    $rootScope.$state = $state; 
    $rootScope.$stateParams = $stateParams; 
}); 

당신이 $state에 액세스 할 수 있습니다 그 방법과 $stateParams 모두 해당 항목은 모든 범위에있을 것입니다 때문에 템플릿과 컨트롤러에 .

+0

그건 작동하지 않습니다. $ stateParams는 내 컨트롤러에 주입 된 $ stateParams와 같은 값을 가지고 있습니다 (비어 있음). – Jerrad

관련 문제