2016-06-28 8 views
-1

Я пытаюсь добавить задержку в 2000 мс с помощью метода таймаута, но он не работает, если я пытаюсь вызвать его в функции (searchfunc) внутри котроллера. Это дает ошибку: $ timeout не является функцией. код контроллера:

var angularjsapp = angular.module('graphApp', ['ngAnimate', 'ui.bootstrap','ui.grid']); 

angularjsapp.controller('AccordionDemoCtrl', function($scope, $timeout) { 

    $scope.searchfunc = function(search_name,$timeout) { 
     WebSocketTest(search_name,keyword_type); 
     //$scope.loading = false; 
     $timeout(function() { 
      $scope.loading = false; 
     }, 2000); 

}); 

ответ

2

можно передать $timeout в качестве параметра для вашей функции

$scope.searchfunc = function(search_name,*$timeout* 

который сделает это определено при вызове функции, потому что вы не передать его. Удаление этого исправляет проблему.

scope.searchfunc = function(search_name) 

Вы можете прочитать о том, как это работает (закрытие) here

1

Вы отменяете $timeout во внутренней функции.
Просто опускаем:

$scope.searchfunc = function(search_name) { 

Может быть вы имеете в виду второй параметр, чтобы быть keyword_type?
Потому что теперь это выглядит как undefined.

$scope.searchfunc = function(search_name, keyword_type) { 
Смежные вопросы