2014-02-26 32 views
1

我有關於使用服務的一個問題。我以這種方式創建服務 和一切正常工作。這是我的代碼。在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']); 

在這兩種情況下,一切工作正常。我將不勝感激任何意見和建議。

此致敬禮。

回答

1

我的問題是,我需要設置 '模塊名' 中'APPNAME'。即這樣:

不,你不這樣做,除非你實際上創建另一個模塊。在這種情況下,您的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 
    }; 

}]); 
+0

謝謝。你教了我一些東西。 –

1

是的,你需要

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

的「APPNAME」是主模塊的名字,而「模塊名」是子模塊名。如果你把'moduleName'和'appName'放在一起,那麼你可以在任何你使用'appName'的地方調用'modulname'函數。

主要模塊:

angular.module('appName', 

子模塊:

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

概念的工作原理是Dependency Injection概念

+0

是。但是爲什麼當我錯過將'appName'設置爲數組時,它會工作? –

+1

請參閱我的updatd答案, –

+1

您不需要srt appName到數組中。這是一個主要模塊。這些概念看起來像依賴注入 –