在 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。
我有一个已设置 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。