2017-03-09 49 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> 
相关问题