是否可以在没有模块的情况下创建AngularJS服务?

是否可以在没有模块的情况下创建AngularJS服务?,angularjs,angularjs-service,Angularjs,Angularjs Service,在AngularJS中,有一个创建控制器的简短形式,因此您不必为此使用模块。这个简短的形式就是简单地定义一个函数 function FooController ($scope) { // ... } 并使用ng controller从HTML标记中引用它: <div ng-controller="FooController"> ... </div> ... 现在,我的问题是,是否有类似的“简短形式”来定义服务?换句话说:您是否可以在不使用模块的情况下定义(

在AngularJS中,有一个创建控制器的简短形式,因此您不必为此使用模块。这个简短的形式就是简单地定义一个函数

function FooController ($scope) {
  // ...
}
并使用
ng controller
从HTML标记中引用它:

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

...
现在,我的问题是,是否有类似的“简短形式”来定义服务?换句话说:您是否可以在不使用模块的情况下定义(并使用)服务

请注意,我知道使用模块构建应用程序非常有意义,不这样做可能/应该被视为不好的做法。只是我在向一个全新的人解释AngularJS,今天就出现了这个问题。所以这只是出于好奇和完整性。

引自

要注册服务,必须具有此服务将要注册的模块 成为其中的一部分

所以我猜答案是否定的。

引自

要注册服务,必须具有此服务将要注册的模块 成为其中的一部分


所以我猜答案是否定的。

因为
ng
模块总是被加载的,所以您可以在
ng
模块上定义您的服务:

angular.module('ng'))
.service('aService',function(){
//你真的不应该这样做
});
这是可行的,但你不应该弄乱一个你不拥有的模块

如果您试图向某人解释为什么将自己的模块与
.controller
一起使用是好的:

  • 和他们谈谈测试。如果您使用的是模块,那么模仿东西就容易多了
  • 如果需要将其他模块作为依赖项(如
    angular ui
  • 如果您想装饰其他服务(例如
    $http
  • 如果需要注册指令、过滤器、动画等
  • 使用模块化代码要好得多:)

由于始终加载
ng
模块,因此您可以在
ng
模块上定义您的服务:

angular.module('ng'))
.service('aService',function(){
//你真的不应该这样做
});
这是可行的,但你不应该弄乱一个你不拥有的模块

如果您试图向某人解释为什么将自己的模块与
.controller
一起使用是好的:

  • 和他们谈谈测试。如果您使用的是模块,那么模仿东西就容易多了
  • 如果需要将其他模块作为依赖项(如
    angular ui
  • 如果您想装饰其他服务(例如
    $http
  • 如果需要注册指令、过滤器、动画等
  • 使用模块化代码要好得多:)

这是一个角度的概念,我一点也不理解,我一直认为“分离”是好的,所以我不明白为什么我们需要将服务与指定的应用程序相关联

我现在做的是:您可以将angularjs应用程序声明为全局对象:

window.markrApplication = angular.module('markrOptionsApp', ....)
并声明您的所有服务如下:

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

当然,您需要在所有angularjs应用程序上设置所有依赖项。

这是一个角度的概念,我一点也不理解,我一直认为“分离”是好的,所以我不明白为什么我们需要将服务与指定的应用程序相关联

我现在做的是:您可以将angularjs应用程序声明为全局对象:

window.markrApplication = angular.module('markrOptionsApp', ....)
并声明您的所有服务如下:

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

当然,您需要在所有angularjs应用程序上设置所有依赖项。

引用文档
来注册服务,您必须有一个模块,该服务将成为其中的一部分。
,所以我猜答案是否定的。如果你将此转化为答案并提供链接,我将接受它。引用文档
注册服务,你必须拥有此服务将成为其一部分的模块。
,因此我猜答案是否定的。如果你将此转化为答案并提供链接,我将接受它。不正确。见下文。您不需要模块,因为您可以使用“ng”模块。不正确。见下文。您不需要模块,因为您可以使用“ng”模块。