$ scope函数未定义(匿名函数)

0 angularjs angularjs-scope

我有这个代码:

  $scope.startTimer = function (){
    $scope.settings.showMinutes = false;
    $scope.settings.showStart = false;
    $scope.settings.showPause = true;
    $scope.settings.showReset = true;
    $scope.settings.showDonate = false;
    if ($scope.settings.seconds <= 0) {
      $scope.settings.seconds = 59;
      $scope.settings.minutes -= 1;
      if ($scope.settings.minutes < 0) {
        $scope.settings.showPause = false;
        $scope.settings.stopTimer = true;
        return;
      }
      setTimeout('startTimer()', 1000);
    } else {
      $scope.settings.seconds -= 1;
      setTimeout('startTimer()', 1000);
    }
  }
Run Code Online (Sandbox Code Playgroud)

当我启动startTimer功能时,我收到错误:

未捕获的ReferenceError:未定义startTimer(匿名函数)

我究竟做错了什么?

Mic*_*ael 6

代替:

  setTimeout('startTimer()', 1000);
Run Code Online (Sandbox Code Playgroud)

使用angularjs等效:

  $timeout($scope.startTimer, 1000);
Run Code Online (Sandbox Code Playgroud)

编辑:正如Cherniv所建议的那样,将$timeout依赖项注入控制器非常重要,因此如果您有一个名为的控制器myCtrl:

angular.module("myApp").controller("myCtrl", ['$timeout', function($timeout){
     $scope.startTimer = function(){
        //Your code
     }
}]);
Run Code Online (Sandbox Code Playgroud)