我有一个应用程序我的建筑有大约6个不同的视图,每个视图都有自己的控制器。
我希望在x秒后自动切换每个视图,并在最后一次切换回到开始。
如果您点击暂停按钮,我也希望能够暂停计时器。
我现在所拥有的(并且我确定这是一种更好的方法)是每个控制器中的一个计时器,一旦视图发生变化就会停止。
$rootScope.homeProm = $timeout(function(){
$location.path('page2');
},12000);
$scope.$on('$locationChangeStart', function() {
$timeout.cancel(homeProm);
});
在这种情况下使用状态会更好吗?并且服务会更好地用于计时器吗?
答案 0 :(得分:0)
您可以使用$destroy
$scope
,这会更有意义。当控制器通过DOM取消注册时,它会调用您想要的代码。基本上这个块已用于清理代码。
$scope.$on('$destroy', function() {
$timeout.cancel(homeProm);
});
答案 1 :(得分:0)
我将有一个包装器控制器:
<div ng-controller="WrapperController">
<div ng-view=""></div>
<div>
每个视图都有自己的控制器,WrapperController将处理更改视图和停止。我不会在每个控制器中都有重复的代码。
这是我首先要做的,也许还有另一个更好的解决方案。