如何从另一个模块获取angular.js模块的值

时间:2016-06-01 08:23:32

标签: javascript angularjs angular-services angular-module

我的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"}

此外,我无法在初始化时使用此样式

在module2中包含module1
angular.module('module2', ['module1']);

因为我已经在module1中包含了module2

angular.module('module1', ['module2']);

1 个答案:

答案 0 :(得分:1)

您仍然需要像控制器或服务等那样将其作为依赖项注入。

如果您想在控制器中访问它,可以使用与此类似的代码

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对提供商进行了解释。向下滚动“Value Recipe”部分。