2015-09-24 15 views
7

1 dakika sonra güncellenen bir Görünümüm var, bu görünümü terk etmeden önce zamanlayıcıyı durduruyorum ve her şey tamam. Geçerli görünüme döndükten sonra, zamanlayıcı tekrar başlatılmaz.

.controller('IndexCtrl', function($scope, $timeout, RestService) { 
    var updateN = 60*1000; 
    $scope.test = "View 1 - Update"; 
    var update = function update() { 
     timer = $timeout(update, updateN); 
     /** make a http call to Rest API service and get data **/ 
     RestService.getdata(function(data) {; 
      $scope.items = data.slice(0,2); 
     }); 
    }(); 

    /** Stop the timer before leave the view**/ 
    $scope.$on('$ionicView.beforeLeave', function(){ 
    $timeout.cancel(timer); 
     //alert("Before Leave"); 
    }); 

    /** Restart timer **/ 
    $scope.$on('$ionicView.enter', function(){ 
    $timeout(update, updateN); 
     //alert("Enter"); 
    }); 
}) 

.controller('ViewCtrl2', function($scope) { 

    $scope.test = "View 2"; 

}); 

cevap

4

, önbelleği ile ilgili bir sorun yoktur ama, sonradan çağrılmaz fonksiyon güncelleme ile sayfaya tekrar girin. Ben $ ionicView.enter içindeki güncelleme işlevi taşımak: düzeltilmiş kodudur: Kodunuzda

$scope.$on('$ionicView.beforeLeave', function(){ 
     //updateN=12000000; 
     $timeout.cancel(timer); 
     //alert("Leave"); 
    }); 

    $scope.$on('$ionicView.enter', function(){ 
     //updateN=12000000; 
    var update = function update() { 
    timer = $timeout(update, updateN); 
    RestService.getdata(function(data) { 
     //console.log(tani); 
     //$scope.items = data; 
     $scope.items = data.slice(0,2); 
    }); 
    }(); 
    }); 
+0

Sorun buydu. Her zaman açısal hizmeti [$ interval] kullanabilirsiniz (https://docs.angularjs.org/api/ng/service/$interval). – LeftyX

0

geri akım görünümüne gidin o önbellekten gelir, bu nedenle kontrolör tekrar çalışmaz:

Bu

Bu görüşün kumandanın kodudur.

$ionicConfigProvider.views.maxCache(0); 

veya önbelleği addding tarafından yönlendirme bölümünde belirli bir görünüm üzerinde önbelleği devre dışı bırakabilirsiniz:: Sen bu kod satırı ekleyerek uygulamanızın yapılandırma bölümünde önbelleğe alma devre dışı bırakabilir sahte özelliğini. Sorunu çözmek

fazla bilgi here ve here

+0

Ben geçerli görünüme yanlış zaten ayarlamış cache: Ben belirledik Endeksi şablonuna Açık : ..... ... – ingalb

+0

Devre dışı bırakma önbelleğinin .config sürümünü denediniz mi? – Emre

-1

Denetleyiciniz fonksiyonu bakış değişikliği çağırmaz. var güncelleme işlevinin dışında $ timeout işlevini çağırır. Her görüntüleme yüklendiğinde, denetleyicisini çağırır ve kapsamlarında anonim veya kendi kendini yürütme işlevlerini çağırır.

.controller('IndexCtrl', function($scope, $timeout, RestService) { 
var updateN = 60 * 1000; 
$scope.test = "View 1 - Update"; 
var update = function update() { 
    var timer = $timeout(update, updateN); 
    /** make a http call to Rest API service and get data **/ 
    RestService.getdata(function(data) {; 
     $scope.items = data.slice(0, 2); 
    }); 
}(); 

/** Stop the timer before leave the view**/ 
$scope.$on('$ionicView.beforeLeave', function() { 
    $timeout.cancel(timer); 
    //alert("Before Leave"); 
}); 

/** Restart timer **/ 
$scope.$on('$ionicView.enter', function() { 

    timer() 
}); 

})

.controller ('ViewCtrl2' fonksiyonu ($ kapsamı) {

$scope.test = "View 2"; 

});

İlgili konular