将子模块注入主模块

时间:2015-01-23 19:53:01

标签: javascript angularjs declaration angularjs-controller angularjs-module

我想将我的子模块注入主应用程序,但是我有注入错误

(错误:[ng:areq] http://errors.angularjs.org/1.3.5/ng/areq?p0=SelectionCtrl&p1=not%20aNaNunction%2C%20got%20undefined

这是我的主要应用

enter image description here

这是我的子模块 enter image description here

我该如何解决?谢谢!

1 个答案:

答案 0 :(得分:2)

你搞乱了模块声明。你宣布了​​angular.module('app.newProject')两次。

在您第一次注册SelectionCtrl时创建它。之后,您创建了另一个具有相同名称angular.module('app.newProject,[]')且具有依赖性和已注册TabController1控制器的模块。当你创建第二个模块时,它会覆盖第一个模块。现在它只有TabController1,这就是为什么角度抛出错误SelectionCtrl是必需的。

有几种appraoches解决了这种方法。

方法1

创建一个模块并将其存储在某个变量中,并随时使用它。

var controllerApp = angular.module('app.newProject', [])
.controller('SelectionCtrl',function(){ 
    //code here
});

controllerApp.controller('TabController1',function(){
 //your code here
});

方法2

创建一个模块,无论何时你想使用它,都要使用它而不依赖。

angular.module('app.newProject', [])
.controller('SelectionCtrl',function(){ 
    //code here
});

angular.module('app.newProject').controller('TabController1',function(){
 //your code here
});

方法3 (我不喜欢这种方法)

创建一个模块并以线性方式追加组件。

angular.module('app.newProject', [])
.controller('SelectionCtrl',function(){ 
    //code here
})
.controller('TabController1',function(){
 //your code here
});

我希望您选择方法2,它将通过引用模块为您提供绑定组件。