javascript - AngularJS( CoffeeScript ): $interval only runs once

标签 javascript angularjs coffeescript timeout

我目前正在尝试使用 AngularJS 附带的 $interval 函数定期重复一个函数。以下是代码片段:

angular.module('tetris-controller', ['tetris-model'])
.controller('tetrisCtrl', [
  '$rootScope', '$scope', '$interval', '$timeout', ...,
  ($rootScope, $scope, $interval, $timeout, ...) ->

    ...

    tick = ->
      console.log("tick")
      $rootScope.count++
      $scope.game.block.down()
      $rootScope.tetris_game = $scope.game.grid.drawText()

    tick()
    $interval tick 500

    ...

])

运行此代码时,只有两个“tick”输出到控制台。我也尝试过使用 $timeout,但延迟似乎无法正常工作(即“勾选”输出到控制台,中间有任何延迟)。

感谢您的宝贵时间!

最佳答案

$interval tick 500 将编译为:$interval(tick(500));

您需要的是:$interval tick, 500

这将变成:$interval(tick, 500);

关于javascript - AngularJS( CoffeeScript ): $interval only runs once,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27957069/

相关文章:

javascript - JavaScript 对象中键查找的性能

javascript - 如何制作全局javascript函数和变量?

angularjs - 添加 ng-pattern 属性的指令

javascript - Atom编辑器:用于插入时间戳的代码段

javascript - 如何用d3中的形状移动形状背景图像

javascript - 如何在 Jquery 中使用单行将 null 替换为 "-"

javascript - $.getJSON 从 angular.element(document).ready 或 initController 调用

angularjs - 针对 angularjs 中的数组长度的自定义验证器

javascript - 函数的括号包裹 - (function() { }) () 和 `.call()`

coffeescript 意外的 INDENT