1

부모 상태 인 myApp와 자식 상태 planManager가 있습니다. planManager/A, planManager은/B 및 planManager/C, A가 B 및 C 파라미터에 정의되어있다 : 동일한 상태 내에서 매개 변수화 된 URL을 탐색하는 방법은 무엇입니까?

.config(function config($stateProvider, $urlRouterProvider) { 
$stateProvider.state('planManager', { 
url: '/planManager/:state', 
views: { 
    "main": { 
    controller: 'planManagerControl', 
    templateUrl: 'planManager/planManager.tpl.html' 
    } 
}, 
data:{ pageTitle: 'Plan Manager' } 
}); 

는 상태 변수 '상태'에 따라 planManager 세 파라미터에 정의 된 URL을 포함하는 도면 , 템플릿에 3 개의 div를 표시하고 숨기고 있습니다.

내가

<a href ui-sref="planManagerTest({state: 'a'})">Plan Manager</a> 

를 사용하여, planManager 내 부모 상태에서 탐색 할 수 있습니다하지만 planManagerTest에서

planManagerTest({state: 'b'}) or planManagerTest({state: 'c'}) 

로 이동 드릴 수 없습니다 ({주 : 'A'})

나는 시도했다., ..하지만 오류가 계속 발생한다. "캔트가 상태로 이동/planManager에서 이동"

어떻게이 탐색을 할 수 있습니까?

편집 : - 나는

<a href ui-sref=".({state: 'b'})"> 

을 시도하고 탐색 마법처럼 일하기 시작 내가 ..이 해결은 구문 잘못있어!

답변

1

당신이 함께 (했다) 대부분 문제가 발생한다 : (a 인용)

또는로 전환 될 국가의 이름 상대적 상태 경로. 경로가^또는로 시작하는 경우. 상대적인 것입니다. 그렇지 않으면 절대적입니다.

몇 가지 예 :

  • $state.go('contact.detail')은 'contact.detail'상태
  • $state.go('^')로 이동합니다 부모 상태로 이동합니다.
  • $state.go('^.sibling')은 형제 상태가됩니다.
  • $state.go('.child.grandchild')은 손자 상태가됩니다. 거의 ui-sref을 사용하는 방법 방법과 동일

. 상대의 UI (SREF) 목표에

주의 사항 :

또한 ui-sref 내에서 상대 국가의 경로를 사용할 수 있습니다, 단지 state.go()에 전달 된 상대 경로 등이이 댓글을 참조하십시오. 경로가 링크가 존재하는 상태, 즉 링크가 포함 된 템플릿을로드 한 상태에 상대적이라는 것을 알고 있어야합니다.우리는 내부의 루트 (index.html을)의 다음

$stateProvider.state('myApp', { 
    url: '/myApp', 
    templateUrl: 'myApp.tpl.html', 
    }); 
    $stateProvider.state('myApp.planManager', { 
    url: '/planManager/:state', 
    views: { 
     "main": { 
     controller: 'planManagerControl', 
     templateUrl: 'planManager.tpl.html', 
     } 
    }, 
    ... 

:

의 우리는 부모와 자식의 상태가 이런 식으로 정의되어 있다고 가정 해 봅시다 :

이 모든 것을 증명하기 위해, plunker이/절대 사용 할 수있는 것은 :

<ul> 
    <li><a ui-sref="myApp.planManager({state:'a'})">myApp.planManager({state:'a'})</a></li> 
    <li><a ui-sref="myApp.planManager({state:'b'})">myApp.planManager({state:'b'})</a></li> 
    <li><a ui-sref="myApp.planManager({state:'c'})">myApp.planManager({state:'c'})</a></li> 
</ul> 

이 이익의 myApp 상태가 될 수 아이들에게 상대 경로에서 :

<ul> 
    <li><a ui-sref=".planManager({state:'a'})">.planManager({state:'a'})</a></li> 
    <li><a ui-sref=".planManager({state:'b'})">.planManager({state:'b'})</a></li> 
    <li><a ui-sref=".planManager({state:'c'})">.planManager({state:'c'})</a></li> 
</ul> 

그리고 형제는 planManager 상태

<ul> 
    <li><a ui-sref=".({state:'a'})">.({state:'a'})</a></li> 
    <li><a ui-sref=".({state:'b'})">.({state:'b'})</a></li> 
    <li><a ui-sref=".({state:'c'})">.({state:'c'})</a></li> 
</ul> 

당신은 절대적 권리 있었던 example is here

+0

에서 호출합니다. SYntax에 관한 문제였습니다. 이 작업은 – nikjohn

+0

그걸 보니 좋았습니다! ;)'ui-router'로 행운을 빌어 요 ... –