2013-08-19 92 views
1

在AngularJS中有一個創建控制器的簡短表單,因此您不必爲此使用模塊。這個簡短的形式是簡單地定義一個函數是否可以在沒有模塊的情況下創建AngularJS服務?

function FooController ($scope) { 
    // ... 
} 

,並從HTML標記引用它使用ng-controller

<div ng-controller="FooController"> 
    ... 
</div> 

現在,我的問題是,是否有類似的「短表」來定義服務?換句話說:您可以在不使用模塊的情況下定義(並使用)服務嗎?

請注意,我知道使用模塊構建應用程序是非常有意義的,而不這樣做可能會/應該被視爲不好的做法。這只是我向一個完全陌生的人解釋AngularJS,而今天出現了這個問題。所以這只是爲了好奇和完整。

+3

從doc引用'要註冊一個服務,你必須有一個模塊,這個服務將成爲'的一部分,所以我想答案是否定的。 – zsong

+0

如果您將此轉換爲答案並提供鏈接,我會接受它。 –

回答

7

doc of Creating Services

報之以註冊一個服務,你必須的模塊,這個服務將 成爲其中的一部分。

所以我想答案是否定的。

+0

不正確。見下文。你不需要一個模塊,因爲你可以使用'ng'模塊。 –

4

由於ng模塊總是加載,你可以在ng模塊定義服務:

angular.module('ng') 
    .service('aService', function() { 
    // you really shouldn't do this 
    }); 

它的工作原理,但你不應該說你沒有自己的模塊來搞亂。

如果你想使用的原因與.controller自己的模塊來給別人解釋好:

  • 跟他們談測試。這是一個更容易嘲笑的事情,如果你使用的模塊
  • 如果你需要有其它模塊的依賴關係(如angular-ui
  • 如果你想裝飾的其他服務(如$http
  • 如果您需要註冊指令,過濾器,動畫等
  • 這是一個要好很多有模塊化的代碼:)
+0

這應該是被接受的答案。 –

1

這是一個角度的概念,我不明白,在所有的,我始終認爲「分家」是不錯的,所以我不明白爲什麼我們需要將服務關聯到指定的應用程序離子。

這裏我在做什麼:你可以宣佈你的angularjs應用程序作爲一個全局對象:

window.markrApplication = angular.module('markrOptionsApp', ....) 

,並宣佈所有服務是這樣的:

markrApplication.service('data', .... 

當然你需要有所有在你所有的angularjs應用程序上設置依賴關係。

相關問題