AngularJS基本控制器加载模块
我有一个baseController和一个childController 每当我向baseController添加模块时,应用程序就会失败,并出现以下错误: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
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在某种程度上是正确的。。。但我不明白在这种情况下我怎么能得到我想要的遗产。。。