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

Share Service Between Two Different Modules and two different js files

本文关键字:两个 之间 共享 文件 服务 模块 js      更新时间:2023-09-26

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

第一个模块.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];
        }
    };
});
第二个模块

在第二个模块.js

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

但在此页面上,发生错误:$injector:模块rr模块错误有人可以帮忙吗?

你的TestService是在TaskAPP上定义的,这就是为什么它不能在LabApp中使用。解决方案是仅为服务创建一个模块,您希望在模块之间共享。

例如,创建一个模块来保存可共享的服务:

angular.module('SharedServices', [])
.service('TestService', function(){
 // code
 }

然后将SharedServices模块注入到要从中访问服务的任何模块中:

angular.module('TaskAPP', ['SharedServices'])

然后使用SharedServices.TestService.fooMethod()访问所需的服务

您的错误是使用服务名称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();
});

来自瑞士的爱:)