在角度控制器方法中递归调用匿名方法

时间:2017-02-23 10:58:21

标签: javascript angularjs

我想从角度控制器方法定期发送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);

        });

我没有得到如何从超时函数调用匿名方法。使用this()失败。

1 个答案:

答案 0 :(得分:0)

首先关闭:不要绑定到那样的元素点击,使用ng-click指令 - 事实上,甚至不在你的应用程序中加载jQuery,在99%的情况下你最好没有它

第二:使用angular的$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="angular.js@1.6.0" 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>