小编典典

AngularJS 控制器可以从同一模块中的另一个控制器继承吗?

all

在模块内,控制器可以从外部控制器继承属性:

var app = angular.module('angularjs-starter', []);

var ParentCtrl = function ($scope, $location) {
};

app.controller('ChildCtrl', function($scope, $injector) {
  $injector.invoke(ParentCtrl, this, {$scope: $scope});
});

示例来自: 死链接http ://blog.omkarpatil.com/2013/02/controller-inheritance-
in-angularjs.html

模块内的控制器也可以从兄弟继承吗?

var app = angular.module('angularjs-starter', []);

app.controller('ParentCtrl ', function($scope) {
  //I'm the sibling, but want to act as parent
});

app.controller('ChildCtrl', function($scope, $injector) {
  $injector.invoke(ParentCtrl, this, {$scope: $scope}); //This does not work
});

第二个代码不起作用,因为$injector.invoke需要一个函数作为第一个参数并且没有找到对ParentCtrl.


阅读 69

收藏
2022-07-06

共1个答案

小编典典

是的,它可以,但您必须使用该$controller服务来实例化控制器:-

var app = angular.module('angularjs-starter', []);

app.controller('ParentCtrl', function($scope) {
  // I'm the sibling, but want to act as parent
});

app.controller('ChildCtrl', function($scope, $controller) {
  $controller('ParentCtrl', {$scope: $scope}); //This works
});
2022-07-06