我用离子和angularjs做了一个应用程序。我有3页。当应用程序转到第2页时,如果您停留20秒......页面将重定向到第一页。
现在问题是$ timeout只能工作2次。
我的控制器代码是:
.controller('Step2Ctrl', function ($scope, $state, $stateParams, $timeout) {
//Timeout
var promise;
$scope.start = function () {
$scope.stop();
promise = $timeout(function () { $state.go('step1'); }, 20000);
}
$scope.stop = function () {
$timeout.cancel(promise);
};
$scope.start();
$scope.$on('$destroy', function () {
$scope.stop();
});
});
我做错了什么?
谢谢
答案 0 :(得分:0)
您的问题是Ionic有一个视图缓存系统,只保存渲染的HTML并执行一次控制器代码(请参阅此链接中的缓存区http://ionicframework.com/docs/api/directive/ionNavView/)。这样做是因为它在视图已经渲染时使您的应用程序更快。
要解决此问题,Ionic会为您提供UI路由器(Ionic用于路由系统)的一些角度事件,以控制您想要在渲染视图之前或之后执行的控制器代码部分。
因此,在您的控制器中添加此代码,它将始终在视图进入时调用您的start()函数。
$scope.$on('$ionicParentView.beforeEnter',function(){
$scope.start();
})