2014-06-07 105 views
2

我想給我的用戶界面的2個部分相同的控制器,但仍然讓他們有他們自己獨特的控制器。角js ui路由器共享控制器

$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

我在某個時間點與此作鬥爭,我相信我製作了一個不能直接訪問的模板文件(通過abstract:true)。下面是一個例子...

.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', 
      } 
     } 
}); 

在您的TMPL/standard.html文件,請確保它存在文件中的某個位置:

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

希望這點你在正確的方向。