2016-09-19 65 views
0

我已經做了一個離子和angularjs的應用程序。我有3頁。當應用程序轉到第2頁時,如果您停留20秒....頁面將重定向到第一頁。角度超時

現在的問題是$超時工作只有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

您的問題是離子有一個觀點緩存系統,大大節省了渲染HTML和執行你的控制器代碼只有一次(見這個鏈接http://ionicframework.com/docs/api/directive/ionNavView/緩存區)。這樣做是因爲它在視圖已經呈現時使您的應用程序更快。

爲了解決這個問題,Ionic爲您提供了UI路由器(Ionic用於路徑系統)的一些角度事件,以控制在視圖渲染之前或之後要執行的控制器代碼部分。

所以,在你的控制器中添加這段代碼,當視圖進入時它總是會調用你的start()函數。

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