AngularJS中同一视图的多个控制器?

时间:2017-03-09 06:08:10

标签: javascript angularjs ionic-framework

有没有办法可以使用stateProvider在angularjs中为同一个templateUrl定义两个控制器,如下所示?

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

数据绑定逻辑在我的控制器中很重,行数超过1000,我已经优化,降低了cyclometic复杂性的一切。 但是现在要使它更模块化,我需要在不改变视图的情况下拆分控制器,就像不使用任何嵌套视图一样。

有没有办法为同一个templateURL / html定义多个控制器?

4 个答案:

答案 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>

答案 1 :(得分:1)

我认为您可以将它们放入多个业务逻辑服务或UI逻辑指令中,以使您的代码更加清晰和整洁。

答案 2 :(得分:0)

您只能从状态中分配一个控制器,而在此模板中分配另一个控制器

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

模板

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

答案 3 :(得分:0)

你可以在html上分配控制器

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

和其他div上的相同HTML

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