AngularJS基本控制器加载模块

AngularJS基本控制器加载模块,angularjs,model-view-controller,Angularjs,Model View Controller,我有一个baseController和一个childController 每当我向baseController添加模块时,应用程序就会失败,并出现以下错误: Argument 'childController' is not a function, got undefined 编辑:添加了一个plnkr 所以这是可行的: angular .module('app') .controller('BaseController', baseController); angular

我有一个baseController和一个childController

每当我向baseController添加模块时,应用程序就会失败,并出现以下错误:

Argument 'childController' is not a function, got undefined
编辑:添加了一个plnkr

所以这是可行的:

angular
    .module('app')
    .controller('BaseController', baseController);

angular
    .module('app', ['ui.grid', 'ui.grid.pagination'])
    .controller('ChildController', childController)         

childController.$inject = ['$controller'];

function childController($controller) {
    var self = this;

    var baseController = $controller('BaseController', {
        $scope: self
    });
但下面的操作不起作用:(注意在baseController模块部分添加了'ui.bootstrap'


您正在两次定义
app
模块。我不够聪明,无法确定发生了什么,但它应该是这样的:

angular
    .module('app', ['ui.grid', 'ui.grid.pagination'])
    .controller('BaseController', baseController)
    .controller('ChildController', childController);

您正在两次定义
app
模块。我不够聪明,无法确定发生了什么,但它应该是这样的:

angular
    .module('app', ['ui.grid', 'ui.grid.pagination'])
    .controller('BaseController', baseController)
    .controller('ChildController', childController);

对于继承,可以使用标准JavaScript继承模式。下面是一个使用$injector的演示

function Parent($scope) {
  $scope.name = 'Human';
  $scope.clickParent = function() {
    $scope.name = 'Clicked from base controller';
  }    
}

function Child($scope, $injector) {
  $injector.invoke(Parent, this, {$scope: $scope});
  $scope.name = 'Human Child';
  $scope.clickChild = function(){
    $scope.clickParent();
  }       
}

Child.prototype = Object.create(Parent.prototype);

对于继承,可以使用标准JavaScript继承模式。下面是一个使用$injector的演示

function Parent($scope) {
  $scope.name = 'Human';
  $scope.clickParent = function() {
    $scope.name = 'Clicked from base controller';
  }    
}

function Child($scope, $injector) {
  $injector.invoke(Parent, this, {$scope: $scope});
  $scope.name = 'Human Child';
  $scope.clickChild = function(){
    $scope.clickParent();
  }       
}

Child.prototype = Object.create(Parent.prototype);

我很惊讶第一个例子能起作用。你确定吗?首先要注意的是,你实际上覆盖了
app
模块。看,“创作与检索”部分是的,我确信上面的第一个条目有效=这是一个我认为Ilya Luzianin在某种程度上是正确的。。。但我不明白在这种情况下,我怎么能得到我想要的继承权……我很惊讶第一个例子能奏效。你确定吗?首先要注意的是,你实际上覆盖了
app
模块。看,“创作与检索”部分是的,我确信上面的第一个条目有效=这是一个我认为Ilya Luzianin在某种程度上是正确的。。。但我不明白在这种情况下我怎么能得到我想要的遗产。。。