2016-04-28 48 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。所以錯誤就是因爲這個。你需要注入並添加相同的位置,否則它不會工作。