$ timeout不是函数错误

时间:2016-04-28 16:31:38

标签: angularjs timeout

嘿,伙计们有一个小问题,我似乎无法看到问题。我正在建立一个角度应用程序,我得到问题标题中所述的错误。我已经将$timeout注入到控制器中,但我仍然在使用这段代码时出错,有人可以告诉我哪里可能出错了吗?

欢呼声

(function() {
'use strict';
angular
    .module('my.module')
    .controller('NewSearchController', NewSearchController);

NewSearchController.$inject = ['$rootScope', '$scope', '$location','UserService',
  'SearchService', '$window', '$controller', '$mdDialog', 'ModalService', '$routeParams', '$timeout'];


/**
 *   @namespace ContactController
 */

function NewSearchController($rootScope, $scope, $location, UserService, SearchService, $window, $controller, $mdDialog, $routeParams, $timeout)

超时代码:

var timerMax = false;
    $scope.$watch(NewSearchController.searchObject.maxDayRate, function(){
      if(timerMax) {
        $timeout.cancel(timerMax);
      }
      timerMax= $timeout(function() {
        NewSearchController.updateSearchFilters();
      }, 5000);
    });

3 个答案:

答案 0 :(得分:2)

问题出在您的注射中:' ModalService'列为可注射但不是其中一个参数,因此角度注入' ModalService'并且稍后在列表中获得的参数值都是错误的。

如果您使用gulp之类的东西来构建您的应用程序,那么使用gulp-ng-annotate自动构建注入列表。这样它就不会出错,你永远不必担心它。

答案 1 :(得分:0)

    '$mdDialog', 'ModalService', '$routeParams', '$timeout']


$mdDialog, $routeParams, $timeout

这两个dnt匹配将其更改为

$mdDialog,ModalService, $routeParams, $timeout

答案 2 :(得分:0)

你已经在控制器的第11位注入了$ timeout,但是在函数中它位于第10位,因为你在函数中错过了ModalService。所以错误只是因为这个。您需要在相同位置注入并添加依赖项,否则它将无法工作。