Angular.js命名空间模块控制器

时间:2014-12-15 13:37:20

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

我的应用程序目录中有以下结构:

scripts/
   modules/
     module1/
       controllers/
          MainController.js
     module2/
       controllers/
          MainController.js
   main.js

我想要实现的是将每个模块中的控制器放到它自己的命名空间中,例如:

module1.MainController
module2.MainController

因此,当我在html ng-controller="MainController"指令中使用时,它知道从哪个模块提供它。模块可以相互通信也很好。

请向我解释如何尽可能以最好的方式实现这一目标,如果可能的话?


我发现了这样的事情: http://jsfiddle.net/luisperezphd/j5jzsppv/但我不确定这是否是一个好的解决方案。它使用angular.ng-modules.js


编辑: 我试图使用Angular.js v.1.3.6。在版本1.2.x上,名称空间没有问题。

1 个答案:

答案 0 :(得分:2)

使用常规依赖注入将其中一个模块注入另一个模块:

var moduleTwo = angular.module('moduleTwo', ['otherModule']);

这允许moduleTwo了解otherModule。然后,您可以使用服务在控制器之间共享状态。服务是单例(只存在一个实例),因此如果多个控制器使用相同的服务,它们将共享该状态。