![](/img/trans.png)
[英]AngularJS 1.3.8 Using multiple controllers, second controller is not working
[英]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.