$ timeout - 数字不是函数

时间:2014-12-01 18:32:55

标签: javascript angularjs

在Angular指令中使用$ timeout工作非常糟糕。基本上即使是最简单的实现也会继续抛出TypeError:number不是函数错误。

我已经做了一些研究,因为我的生活无法弄清楚出了什么问题。

$timeout(function(){
   console.log('$timeout called');
}, 500);

我只是假设$ timeout需要延迟函数,除非我不正确地阅读文档,否则没有任何意义。

https://docs.angularjs.org/api/ng/service/ $超时

提前致谢。

除了指令中的$ timeout实现之外,还删除了所有内容。

    (function (window, angular, undefined) {
    'use strict';

    angular.module('bento.numberinput', ['bento.services'])
    .factory('$helper',[
      function(){

       // code here

      }
    ])
    .directive('bentoNumberInput', [
      '$helper',

      function ($helper) {
      return {
        restrict  : 'A',
        require   : '?ngModel',
        replace   : false,
        transclude: true,
        link: function($scope, $element, $attrs, $controller, $timeout){

          $timeout(function(){
             console.log('$timeout called');
          }, 500);

        }
      };
    }]);

})(window, window.angular);

1 个答案:

答案 0 :(得分:3)

$ timeout需要在顶部注入,就像你的$ helper一样,由指令名称注入到函数中,因为你正在使用数组形式

.directive('bentoNumberInput', [ 
  '$helper', '$timeout',

  function ($helper, $timeout) {
  return {
    restrict  : 'A',
    require   : '?ngModel',
    replace   : false,
    transclude: true,
    link: function($scope, $element, $attrs, $controller){

      $timeout(function(){
         console.log('$timeout called');
      }, 500);

    }
  };
}]);