繁体   English   中英

在angularjs中的一个控制器上可以使用多个控制器吗?

[英]is it possible using multiple controllers on one controller in angularjs?

所以说我有多个控制器

angular.module('myApp.controllers', []).
              controller('MyCtrl1', ['$scope', function($scope) {
                  //define $scope.controller1 here
                  $scope.controller1 = "controller1";
              }).
              controller('MyCtrl1', ['$scope', function($scope) {
                  //define $scope.controller2 here
                  $scope.controller2 = "controller2";
              }).
              controller('MyCtrl3', ['$scope', function($scope) {
                  //I want to get the property of $scope.controller1 and    
                  //$scope.controller2 here
              });

如您在上面看到的,例如,我想从3访问controller1和controller2的$ scope属性...

问题是,angularjs是否能够在一个控制器上调用多个控制器?

在AngularJS中,范围是根据它们在DOM中的位置继承的。 因此,如果您的html看起来像:

<div ng-controller="my-ctrl1">
    <div ng-controller="my-ctrl2">
        <div ng-controller="my-ctrl3"></div>
    </div>
</div>

然后,可以从MyCtrl1,MyCtrl2和MyCtrl3访问$ scope.controller1,但是只能从MyCtrl2和MyCtrl3访问$ scope.controller2。

如果要在控制器之间共享数据,则应将该数据存储在服务中,然后将服务注入到控制器中:

angular.module('myApp.controllers', []).
    factory('MyData', function(){
        var MyData= {};
        return MyData;
    }).
    controller('MyCtrl1', ['$scope' 'MyData', function($scope, MyData) {
        MyData.controller1 = "controller1";
    }).
    controller('MyCtrl2', ['$scope', 'MyData', function($scope, MyData) {
        MyData.controller2 = "controller2";
    }).
    controller('MyCtrl3', ['$scope', 'MyData', function($scope, MyData) {
        // Now you can access MyData.controller1 and MyData.controller2
    });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM