【发布时间】:2017-05-20 12:34:40
【问题描述】:
我有以下代码:
launch.controller('HeaderController', ['$scope', '$state','$timeout', function($scope, $state, $timeout){
$scope.reloading = false ;
$scope.reload = function(){
$scope.reloading = true;
$state.reload();
$timeout(function(){
$scope.reloading = false;
$scope.$apply()
}, 2000);
}
}]);
还有以下模板:
<img src="assets/img/refresh.svg" ng-class="{'reloading': reloading == true}">
当我不使用$scope.reload()时,它完美地反映在视图中。但是,一旦我使用该函数,视图就无法识别正在更改的布尔值。
我已经检查了该功能是否正在运行,并且确实在运行;在$state.reload() 之后添加console.log 就可以了。
此外,视图实际上确实会重新加载数据。
这里有什么问题..?
【问题讨论】:
-
这对我不起作用,即使我将继承功能更改为
true.. -
尝试删除
$scope.$apply()- 我看不出它有什么用,因为您使用的是原生$timeout服务 -
你是对的,在这种情况下没有任何区别。但是,它也不能解决问题。
-
尝试将
$stateParams注入控制器,并使用此功能:$scope.reload = function() { $scope.reloading = true; $state.transitionTo($state.current, $stateParams, {reload: true, inherit: false, notify: false}).then(function() { $timeout($scope.reloading = false;), 2000}); }也 - 在第二行评论$scope.reloading = false ;- 如果它改变了任何内容,请告诉我
标签: javascript angularjs scope