角度超时

时间:2016-09-19 11:13:10

标签: javascript angularjs ionic-framework

我用离子和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();
    });

});

我做错了什么?

谢谢

1 个答案:

答案 0 :(得分:0)

您的问题是Ionic有一个视图缓存系统,只保存渲染的HTML并执行一次控制器代码(请参阅此链接中的缓存区http://ionicframework.com/docs/api/directive/ionNavView/)。这样做是因为它在视图已经渲染时使您的应用程序更快。

要解决此问题,Ionic会为您提供UI路由器(Ionic用于路由系统)的一些角度事件,以控制您想要在渲染视图之前或之后执行的控制器代码部分。

因此,在您的控制器中添加此代码,它将始终在视图进入时调用您的start()函数。

$scope.$on('$ionicParentView.beforeEnter',function(){
  $scope.start();
})