我的angular.js应用程序中有两个模块。
在module1(示例名称)中,我定义了一个值,例如

angular.module('module1')
    .value('ID', '')
    .service('someService', function(ID) {
        this.getId = function() {
            return ID;
        }
        this.setId = function(id) {
            ID = id;
        }
    })

我想访问module2中的module1的ID值。
我可以使用以下命令从module2访问module1
`
angular.module('module1')

登录控制台将是`
Object {_invokeQueue: Array[39], _configBlocks: Array[1], _runBlocks: Array[1], requires: Array[8], name: "module1"}

当我尝试使用访问ID值或someService时
angular.module('module1').service("someService");

要么
angular.module('module1').value("ID");

我越来越奇怪的对象看起来像
Object {_invokeQueue: Array[40], _configBlocks: Array[1], _runBlocks: Array[1], requires: Array[8], name: "module1"}

我也不能使用这种样式在初始化时将module1包含在module2中
angular.module('module2', ['module1']);

因为我已经在module1中包含了module2
angular.module('module1', ['module2']);

最佳答案

您仍然需要像使用 Controller 或服务等一样将其作为依赖项注入(inject)。

如果要在 Controller 中访问它,则可以使用与此类似的代码

angular.module('module2').controller('MyExistingCtrl', ['ID', function(ID){
    console.log(ID);
}]);

或者,按照约翰·帕帕(John Papa)的风格指南:
angular.module('module2').controller('MyExistingCtrl', MyExistingController)

MyExistingController.$inject = ['ID'];

function MyExistingController(ID){
    console.log(ID);
}

阅读更多关于dependency injection的信息。

还在提供者的angular documentation上进行了说明。向下滚动“值配方”部分。

关于javascript - 如何从另一个模块获取angularjs模块值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37563207/

10-10 09:00