2016-04-28 46 views
1

嘿家伙有一个小问题,我似乎无法看到问题。我建立一个角度的应用程序,并即时得到问题标题中所述的错误。我已经将$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); 
    }); 
+0

请尝试发布完整的代码示例。你的错误可能与你如何注入'$ timeout'有关,但没有看到我只是猜测的一切。 – Duncan

+0

编辑我的问题,以显示它是如何注入的。 –

+0

添加了我的答案,解释了您注射错误的位置。 – Duncan

回答

2

问题出在你的注射中:'ModalService'被列为可注射但不是其中一个参数,所以角将注入'ModalService',并且您在列表中稍后获取的参数值都是错误的。

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

+0

欢呼,这可能是我长期看代码的一个例子。生病检查了这一点,并加强答案,如果它修复它感谢新的一双眼睛:P –

+0

似乎工作将接受你的答案,当问题计时器用完(谁知道stackoverflow让你等待加入答案) –

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


$mdDialog, $routeParams, $timeout 

这两个DNT匹配将其更改为

$mdDialog,ModalService, $routeParams, $timeout 
0

你已经在控制器的第11个位置注入了$ timeout,但是在函数中它是在第10个位置,因为你在函数中错过了ModalService。所以错误就是因为这个。你需要注入并添加相同的位置,否则它不会工作。