2014-06-07 3 views
2

내 컨트롤러의 두 부분에 동일한 컨트롤러를 지정하고 싶지만 여전히 고유 한 컨트롤러를 가지고 있습니다.Angular js ui-router 공유 컨트롤러

$stateProvider 
    .state('standard.page', { 
     url: '/:page', 
     resolve: { 
     page: function($stateParams) { 
      ... 
     }, 
     }, 
     views: { 
     'content': { 
      templateUrl: '/tmpl/page', 
      controller: 'controllercontent' 
     }, 
     'sideMenu': { 
      templateUrl: '/tmpl/menu', 
      controller: 'controllermenu', 
     } 
     } 
    }) 

그래서 콘텐츠와 sideMenu가 컨트롤러를 공유하기를 원합니다. 보기 위에 컨트롤러를 추가하면 새 템플릿이 필요하므로이 상태에 대한 고유 한 템플릿을 만드는 대신 standard 템플릿을 사용하고 싶습니다. 이 예제에서 3 컨트롤러를 어떻게 얻을 수 있습니까? 감사.

+0

이 해결책이 있습니까? – Dieterg

답변

1

나는 어떤 시점에서이 문제에 시달렸는데, 나는 직접 접근 할 수없는 템플릿 파일을 만들었다 고 생각한다. 다음은이 어딘가에 파일 내에 존재해야합니다, 당신의 tmpl/standard.html 파일에서

.state('standard', { 
    url: '/standard', 
    abstract: true, 
    templateUrl: '/tmpl/standard.html', 
    controller: 'SharedController' 
    }, 
}) 

.state('standard.page', { 
    url: '/:page', 
    resolve: { 
    page: function($stateParams) { 
      ... 
     }, 
    }, 
    views: { 
     'content': { 
       templateUrl: '/tmpl/page', 
       controller: 'controllercontent' 
      }, 
      'sideMenu': { 
       templateUrl: '/tmpl/menu', 
       controller: 'controllermenu', 
      } 
     } 
}); 

... 예입니다 :

<div ui-view="sideMenu"> 
<div ui-view="content"> 

희망이 올바른 방향을 가리 킵니다.