通过模块传递 angular 服务

passing angular services through modules

我正在查看 HotTowel-Angular 的代码,我正在尝试使用它制作一个小示例,但我无法让它工作。

这是我的代码:

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

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

common.factory('commonf', ['$rootScope', '$timeout', commonFactory]);



function commonFactory($rootScope, $timeout){

    var service = {
    $rootScope: $rootScope,
    $timeout: $timeout
    }

    return service;

}

app.controller('TestCtrl', ['commonf', testctrl]);

function testctrl(commonf) {

   activate(); 

   var $timeout = commonf.$timeout;

   function activate() {

     $timeout(function () {
     alert("test");
     }, 5);

   }

}

我们的想法是将整个应用程序中使用的所有常见 angular 服务保留在注入到所有 services/controllers.

的服务中

当我尝试执行上述操作时,出现以下错误:

"$timeout is not a function";

编辑:Plunker

您在从 commonf 中提取依赖项之前调用了 activate()。更改为:

function testctrl(commonf) {
  // define this first so that $timeout is defined when activate is executed
  var $timeout = commonf.$timeout;

  activate(); 

  function activate() {
    $timeout(function () {
      alert("test");
    }, 5);
}

在 javascript 中,将变量声明作为函数中的第一条语句通常是一种很好的做法。