关于AngularJS中服务使用的不确定性

时间:2014-02-26 09:11:22

标签: angularjs

我有一个关于使用服务的问题。我正在以这种方式创建服务 一切正常。这是我的代码。

var appName = angular.module('appName', ['configuration', 'angularSpinner']);

// this is whay that I creating services. 
(function (module) {
    var moduleName = function () {
        return function(inputVar) {
                // some work with 
        // inputVal variable 
            return result;
        }
    };

    module.factory("moduleName", [moduleName]);
}(angular.module("appName")));


// in this way I'm using service into controller. 
appName.controller('controllerName', function($scope, moduleName) {

});

我的问题是我需要在'appName'中设置'moduleName'。就是这样:

var appName = angular.module('appName', ['configuration', 'angularSpinner', 'moduleName']);

在这两种情况下,一切正常。我将不胜感激任何意见和建议。

祝你好运。

2 个答案:

答案 0 :(得分:1)

是的,你需要

var appName = angular.module('appName', ['configuration', 'angularSpinner', 'moduleName'])

'appName'是主模块名称,'moduleName'是子模块名称。如果您将'moduleName'与'appName'放在一起,那么无论您使用'appName',都可以调用'modulname'函数。

主要模块:

angular.module('appName',

子模块:

, ['configuration', 'angularSpinner', 'moduleName']

概念由Dependency Injection概念

起作用

答案 1 :(得分:1)

我的问题是我需要在'appName'中设置'moduleName'。就是这样:

不,不,除非您实际创建另一个模块。在这种情况下,您的moduleName实际上是您的工厂名称。如果你想创建另一个模块,你可以这样做。

var myModule = angular.module('myModule', []);

myModule.factory('myFactory', [function(){ /* factory definition */ }]);

var app = angular.module('app', ['myModule']);
// this will now make myFactory available to my app

您使用返回函数的工厂方法。如果需要服务(单个对象),请使用服务方法。

我创建了这样的服务

var app = angular.module('app', []);

app.service('myService', [function(){

    var serviceMember = { name: 'something' };

    var serviceMethod = function() { };

    // revealing module pattern
    return {
        serviceMember: serviceMember,
        serviceMethod: serviceMethod
    };

}]);