【问题标题】:Angular.js namespacing modules controllersAngular.js 命名空间模块控制器
【发布时间】:2023-04-04 02:12:01
【问题描述】:

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

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 版本上,命名空间没有问题。

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 好的,我已经做了一些关于共享状态的研究,这都是关于在控制器之间共享数据的。命名空间呢?仍然当我注入两个具有相同名称的控制器的模块时,结果仅取自最后注入的模块。
    猜你喜欢
    • 1970-01-01
    • 2012-07-08
    • 2014-05-19
    • 1970-01-01
    • 2020-06-14
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    相关资源
    最近更新 更多