通过模块传递角度服务

时间:2015-11-09 14:06:40

标签: angularjs angular-module

我正在查看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);

   }

}

我们的想法是将整个应用程序中使用的所有常见角度服务保留在注入所有服务/控制器的服务中。

当我尝试上面这样做时,我收到以下错误:

  

“$ timeout不是函数”;

修改:Plunker

1 个答案:

答案 0 :(得分:1)

在从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中,通常最好将变量声明作为函数中的第一个语句。