2014-10-17 2 views
9

각도의 ui 라우터를 사용하기 시작했으며 여러 URL이 단일 상태를 참조하는 방법을 파악하려고합니다. 예를 들면 :각도 UI 라우터 : 단일 상태로 여러 URL

/orgs/12354/overview 
//retyrns the same pages as 
/org/overview 

내 $ 상태 제공자는 현재이 같은 설정하고 해당 불분명 내 그것을 제대로 '조직'에서 상속하도록 '/ 조직/개요'경로 별명에 미끄러하는 방법 부모의.

.state('org', { 
    abstract: true, 
    url: '/orgs/:orgID', 
    templateUrl: '/client/navigation/main.html' 
}) 
.state('org.overview', { 
    url: '/overview', 
    templateUrl: '/client/overview/overview.html', 
    controller: 'OverviewCtrl' 

}) 

답변

1

다음과 같이 하위 상태를 정의하면됩니다.

.state('org', { 
    abstract: true, 
    url: '/orgs/:orgID', 
    templateUrl: '/client/navigation/main.html' 
}) 
.state('org.1', { 
    templateUrl: '/client/overview/one.html', 
    controller: 'OverviewCtrl' 
}) 
.state('org.2', { 
    templateUrl: '/client/overview/two.html', 
    controller: 'OverviewCtrl' 
}) 
.state('org.3', { 
    templateUrl: '/client/overview/three.html', 
    controller: 'OverviewCtrl' 
}) 
+1

"/ overview"가/orgs 경로의 일부가 아니므로 유효한 경로임을 어떻게 알 수 있습니까? –

+0

나는 이것을 테스트하지는 않았지만 제어기를 추상 상태로 둘 수 있어야한다. 왜냐하면 그것은 모든 자식들에게 동일하기 때문이다. –

+0

예. 맞습니다. – cbass

0

첫째, 추상 상태는보기를 반환하지 않습니다.

또한 목록보기에 복수형 orgs을 사용하고 항목보기에 단 하나의 org을 사용하므로 기본 동작 인 추가 경로를 사용할 수 없습니다.

.state('org', { 
    url: '/orgs', 
    templateUrl: '/client/navigation/main.html' 
}) 
.state('org.overview', { 
    url: '^/org/:orgID/overview' 
    templateUrl: '/client/overview/overview.html', 
    controller: 'OverviewCtrl' 
}) 
6

이것은 when()을 사용하여 달성 할 수 있습니다. 여러 URL로 가리 키려는 상태라고 가정합니다. 다음과 같이

.state('app.home', 
    { 
    url: '/home', 
    templateUrl: 'home.html', 
    controller: 'homeCtrl' 
    }) 

config()에서는 when()를 사용할 수 있습니다

angular.module('myApp', []) 
    .config($urlRouterProvider){ 
     $urlRouterProvider.when(/homepage, ['$state','$match', function ($state, $match) { 
      $state.go('app.home'); 
}]); 
} 

는 마찬가지로 당신이 같은 상태를 가리키는 여러 URL을 추가 할 수 있습니다.

+0

이 솔루션은 'orderOverview'상태의/orderOverview와 같은 URL을 가지며 다른 컨텍스트로 인해 'orderOverview'와 같은 상태를 가리키는/orderHistory와 같은 다른 URL을 원할 경우 작동하지 않지만 계속 유지해야합니다 주소창에 입력/사용 된 URL. –

+0

솔루션으로 인해 URL이 변경됩니다. –

관련 문제