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



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

我想在这里做这样的事情

我正在使用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的AngularJS风格指南。

最新更新