【问题标题】:Inject sub module to main module将子模块注入主模块
【发布时间】:2023-03-14 22:43:01
【问题描述】:

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

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

这是我的主要应用程序

这是我的子模块

我该如何解决这个问题?谢谢!

【问题讨论】:

  • 控制器应该是var controllerApp = angular.module('app.newProject', []).controller('SelectionCtrl',function(){ //code here}) 第二个控制器不应该再次创建具有依赖关系的模块,它应该是controllerApp.controller('TabController1')

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


【解决方案1】:

你搞砸了模块声明。你声明了两次angular.module('app.newProject')

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

有几种方法可以解决这种方法。

方法 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,该方法可让您通过引用模块来绑定组件。

【讨论】:

  • 是的,它正在工作,非常感谢你)))))我可以在这里再问一个问题吗?如何从我的 app.module.js 中划分控制器?我的意思是我必须在控制器 js 中编写控制器?
  • 不,不需要在 controller.js 中编写控制器,只要您想从任何地方添加控制器,您只需引用该模块即可。正如我在回答中解释的那样。选项 2 可以提供更大的灵活性。
猜你喜欢
  • 2021-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-30
  • 2021-01-31
  • 2017-10-05
相关资源
最近更新 更多