【问题标题】:Share Service Between Two Different Modules and two different js files在两个不同的模块和两个不同的 js 文件之间共享服务
【发布时间】:2016-02-09 18:15:42
【问题描述】:

我检查了很多问题,但没有人清楚地给出使用不同 js 文件的示例。 我正在研究 Angular 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 模块错误 有人可以帮忙吗?

【问题讨论】:

    标签: javascript angularjs node.js


    【解决方案1】:

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

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

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

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

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

    然后使用SharedServices.TestService.fooMethod()访问你想要的服务

    【讨论】:

      【解决方案2】:

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

      来自瑞士的爱:)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-06
        • 1970-01-01
        • 1970-01-01
        • 2016-05-20
        • 1970-01-01
        • 2017-11-23
        相关资源
        最近更新 更多