2017-02-23 255 views
0

Я хочу отправлять запросы ajax через регулярные интервалы из метода углового контроллера. для этого я написал код, как показано ниже.Вызов анонимного метода рекурсивно в методе углового контроллера

var mainApp = angular.module('myapp',[]); 
mainApp.controller('controller', function($scope,$http,$window,$timeout) { 
    $('#radioBtn a').on('click', function(){ 
      $http({ 
       method:, 
       url:, 
       params:{parameters} 
      }).then(function(success){ 
      },function(error){ 
      }); 

      $timeout(function(){ 
       //how to call the anonymous function passed to $('#radioBtn     a').on() here. 
      },30000); 

     }); 

Я не получаю способ вызова анонимного метода из функции тайм-аута. Использование этого() не выполняется.

ответ

0

попробуйте этот способ.

var mainApp = angular.module('myapp',[]); 
mainApp.controller('controller', function($scope,$http,$window,$interval) { 
    $('#radioBtn a').on('click', function(){ 


      $interval(function(){ 
       $http({ 
        method:, 
        url:, 
        params:{parameters} 
       }).then(function(success){ 
       },function(error){ 
       });  
      },30000); 

     }); 
+0

Он должен вводить $ интервал здесь вместо $ таймаут. Это, однако, довольно опасно. Поскольку новый интервал будет запускаться каждый раз, когда вы нажимаете кнопку. – MikeOne

0

Во-первых: Не связываться с элементных щелчками, как это, используйте директиву ng-click - на самом деле, просто не даже загрузить JQuery в приложении, в 99% случаев вы лучше без него ,

Second: Используйте угловой $interval сервис. Проверьте пример кода ниже.

angular.module('app', []) 
 
.controller('ctrl', function($scope, $interval) { 
 
    
 
    $scope.numbers = []; 
 
    $scope.startInterval = function() {  
 
    $scope.interval = $interval(function() { 
 
     $scope.numbers.push($scope.numbers.length); 
 
    }, 1000)  
 
    } 
 
})
<!DOCTYPE html> 
 
<html> 
 

 
    <head> 
 
    <script data-require="[email protected]" data-semver="1.6.0" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.0/angular.js"></script> 
 
    <link rel="stylesheet" href="style.css" /> 
 
    <script src="script.js"></script> 
 
    </head> 
 

 
    <body ng-app="app" ng-controller="ctrl"> 
 
    <button ng-if="!interval" ng-click="startInterval()">Start polling</button> 
 
    <div ng-repeat="number in numbers"> 
 
     {{number}} 
 
    </div> 
 
    </body> 
 
</html>