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

Gol*_*den 1 angularjs angularjs-service

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

function FooController ($scope) {
  // ...
}
Run Code Online (Sandbox Code Playgroud)

并使用ng-controller以下方法从HTML标记中引用它:

<div ng-controller="FooController">
  ...
</div>
Run Code Online (Sandbox Code Playgroud)

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

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

zs2*_*020 7

引自创建服务文档

要注册服务,您必须拥有该服务所属的模块.

所以我猜答案是否定的.


小智 5

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

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

它可以工作,但是您不应该将自己不拥有的模块弄乱。

如果您想向某人解释为什么使用自己的模块.controller会很好:

  • 与他们讨论测试。如果您使用模块,则模拟事物要容易得多
  • 如果您需要其他模块作为依赖项(例如angular-ui
  • 如果您要装饰其他服务(例如$http
  • 如果您需要注册指令,过滤器,动画等。
  • 拥有模块化代码会更好:)