在 Angular.js 控制器的作用域中,函数代码不会 运行 在 $timeout 语句下面

In an Angular.js controller's scope function code doesn't run below a $timeout statement inside

我有一个已设置 ng-click="refresh()" 的按钮。控制台在超时函数正确记录之前记录,但 $timeout 块内和块之后的控制台日志似乎没有记录。如果我删除 $timeout 块,每个控制台日志都有效。我什至检查了 $interval 而不是 $timeout 但相同的行为。

我想做这样的事情here

我正在使用 Angular.js 1.4.0

这是我在控制器中的实现

      $scope.refreshing ={state: false};
      $scope.refresh = function(){
        console.log($scope);
        $scope.refreshing.state = true;
        $scope.search(); //sends an http request and loads results.
        console.log('this logs');
        // $scope.refreshing.state = false;
        $timeout(function(){
           console.log('this doesnt log')
           $scope.refreshing.state = false;
         },2000);
        console.log('this doesnt log')

      }

您需要确保您的依赖注入正确连接。例如:

angular
    .module("MyApp")
    .controller("MyController", ["$scope", "$timeout", MyController]);

function MyController($scope, $timeout) {
    // controller code
}

有关控制器的一些最佳做法,请参见John Papa's AngularJS style guide