在两个不同的模块和两个不同的js文件之间共享服务

时间:2016-02-09 18:15:42

标签: javascript angularjs node.js

我检查过很多问题,但没有人清楚地给出使用不同js文件的示例。 我正在研究角度js,我陷入了以下问题。 问题是,我想调用不同js文件中的函数并具有不同的模块。 现在我创建"服务",它处理模块和两个功能,这是我的代码,

first.js中的第一个模块

var TaskAPP = angular.module('TaskApp', []);
TaskAPP.factory("TestService", function () {
    var users = ["ad", "bf", "tt"];
    return {
        all: function () {
            return users;
        },
        first: function () {
            return users[0];
        }
    };
});

second.js中的第二个模块

var LabAPP = angular.module('LabApp', ['TaskApp', 'TestService']);
  LabAPP.controller("LabController", function ($scope, TestService) {
       $scope.aa = TestService.first();
});

但是在这个页面上,出现错误错误:$ injector:modulerr 模块错误 任何人都可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

Object object = event.getSource(); if (object instanceof MaterialImage) { MaterialImage image = (MaterialImage) object; String type = image.getTitle(); if (type.equals("simpleLine")) { ... } 上定义了TestService,这就是TaskAPP无法使用的原因。解决方案是创建一个仅用于服务的模块,您希望跨模块共享。

例如,创建一个模块只是为了保存可共享的服务:

LabApp

然后将angular.module('SharedServices', []) .service('TestService', function(){ // code } 模块注入您想要访问服务的模块中:

SharedServices

然后使用angular.module('TaskAPP', ['SharedServices'])

访问您想要的服务

答案 1 :(得分:1)

您的错误是使用服务名称TestService作为模块依赖项 - 此行:

var LabAPP = angular.module('LabApp', ['TaskApp', 'TestService']);

这失败了,因为没有名为TestService的模块,只有一个服务里面模块TaskApp。这应该有效:

var LabAPP = angular.module('LabApp', ['TaskApp']);
  LabAPP.controller("LabController", function ($scope, TestService) {
       $scope.aa = TestService.first();
});

来自瑞士的爱:)。