2016-09-19 5 views
0

私はionicと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

あなたのタイムアウトで、 '$ state.go'の前に' $ scope。$$ destroyed'を記録できますか?それが真であれば、条件を追加することができます。if(!$ scope。$$ destroyed){$ state.go(...)} ' – floribon

+0

私が見ることができるように、問題は、 。私はページ上の負荷がうまくいかないと思う – Dimitris

答えて

0

あなたの問題は、イオン性(このリンクhttp://ionicframework.com/docs/api/directive/ionNavView/でキャッシュ領域を見る)一度だけレンダリングされたHTMLを保存して、コントローラーのコードを実行し、ビューのキャッシュシステムを持っているということです、ありがとうございました。これは、ビューが既にレンダリングされているときにアプリをより速くするために行われます。

これを解決するために、IonicはUIルータ(Ionicがルートシステムに使用する)からいくつかの角度イベントを提供して、ビューのレンダリングの前または後に実行するコントローラコードの一部を制御します。

このコードを追加すると、ビューが入るときに常にstart()関数が呼び出されます。

$scope.$on('$ionicParentView.beforeEnter',function(){ 
    $scope.start(); 
}) 
関連する問題