angularjs中不包含服务

时间:2013-05-23 10:57:00

标签: angularjs requirejs angularjs-factory

我已经将angularjs与angularjs app集成在一起。 现在我得到了错误'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();
       });
});

这里有什么问题?

2 个答案:

答案 0 :(得分:0)

看起来您正在尝试两次注册该服务。在服务定义“服务/服务”中,您可以创建一个模块“myApp.services”并注册该服务。

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

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

请注意,您仍需要事先要求serviceConfig,因此模块会以angular角度注册。

答案 1 :(得分:0)

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

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

那是在Angular 1.02上;我已经升级到1.2.16然后它与包装数组工作正常。