2017-03-09 26 views
2

有沒有什麼辦法可以像下面那樣使用stateProvider在angularjs中爲相同的templateUrl定義兩個控制器?在AngularJS中同一視圖的多個控制器?

//State Provider for dashBoard Screen 
.state('dashBoard', { 
    cache : false, 
    url : "/dashBoard", 
    templateUrl : dashBoardHtml, 
    controller : ["FirstController","SecondController"] 
}) 

在我的控制器中的數據綁定邏輯是可重,線的數量爲1000個以上,我已經優化,降低的複雜性cyclometic一切。 但現在爲了使它更模塊化,我需要在不改變視圖的情況下拆分控制器,就像不使用任何嵌套視圖一樣。

有沒有什麼辦法可以定義多個contollers到相同的templateURL/html?

+0

要一次或單獨的兩個控制器上的HTML

<div ng-controller="controller1"></div> 

並在相同的HTML分配控制器? – tanmay

+0

您可以在視圖中定義一個控制器,並在狀態中定義另一個控制器 –

+0

嘗試在狀態 –

回答

1

這會爲你工作,但如果你想,那麼你可以通過使用ng-controller指令以及

$stateProvider.state('view', { 
    url: "/url", 
    views: { 
     'menuContent': { 
      templateUrl: "template", 
      controller: ['ctrl1', 'ctrl2'] 
     } 
    } 
}); 

例如diretive

<div ng-controller="testController2"> 
      <!-- your view content --> 
    </div> 

    <div ng-controller="testController1"> 
      <!-- your view content --> 
    </div> 
0

只能從國家和其他一個分配一個控制器模板裏面這樣

.state('dashBoard', { 
    cache : false, 
    url : "/dashBoard", 
    templateUrl : dashBoardHtml, 
    controller : FirstController 
}) 

模板

<div data-ng-controller="SecondController"> 
     <!-- your view content --> 
    </div> 
1

我想你可以把它們轉化爲業務邏輯或指令幾個服務UI邏輯,使你的代碼更清晰整齊。

+0

這可能是最好的解決方案。 – Marko

0

您可以在其他分區

<div ng-controller="controller2"></div> 
相關問題