1

我已经将 requirejs 与 angularjs 应用程序集成在一起。现在我出错了'Provider commonService must define $get factory method. from myApp '

我如何在 requirejs 中包含服务?我在这里发布 serviceConfig 代码:

define([
    'angular',
    'Services/services',
    'Plugins/Users/services',
], function(angular, commonService,usersServices) {
    var services = {
        commonService : commonService,
        usersServices : usersServices,
    };

    var initialize = function (angModule) {
        angular.forEach(services,function(service, name) {
            angModule.factory(name, service);
        });
    }

    return {
        initialize: initialize
    };
})

“服务/服务”和“插件/用户/服务”包含不同的服务。例如。

define(['angular'], function (angular) {
    app = angular.module(appName + '.services', []);

    app.factory('usersService', function($http, $q, $rootScope) {
           function usersService() {
                 this.registration = function(config) {
                     return this.common(config);
                 };
           }
          return new usersService();
       });
});

这里有什么问题?

4

2 回答 2

0

您似乎正在尝试注册该服务两次。在您的服务定义“服务/服务”中,您创建一个模块“myApp.services”并注册服务。

您无需在 serviceConfig/initialize 中再次注册它们。然后你只需要在创建你的主模块(我假设是'myApp')时引用这些模块,如下所示:

app = angular.module("myApp", ["myApp.services", "myApp.plugin.services"]);

请注意,您仍然需要预先要求 serviceConfig,因此模块会使用 angular 进行注册。

于 2013-06-22T06:27:01.993 回答
0

我从 angular-gravar 收到了类似的错误消息:“提供者 gravatarService 必须定义 $get 工厂方法。”

我通过编辑代码来修复,provider('gravatarService', function() { … }而不是provider('gravatarService', [ function() { … } ].

那是在 Angular 1.02 上;我已经升级到 1.2.16,然后它与包装数组一起工作得很好。

于 2014-06-13T12:47:47.857 回答