0

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

4

1 回答 1

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 中,将变量声明作为函数中的第一条语句通常是一种好习惯。

于 2015-11-09T14:22:40.260 回答