2016-11-11 9 views
0

I новый с приложением и угловой.Отмена интервала, когда приложение переходит на задний план

Мое приложение использует интервал, чтобы обновить область с запросом получения на сервер. Я хочу, чтобы этот интервал был отменен, когда приложение переходит на задний план.

я увидел на другой пост «$ OnUnload = функция()», но я не уверен, если это хорошо или как использовать его ... Я стараюсь: $scope.$onunload=function(){ // Make sure that the interval is destroyed when leaving app $scope.stopRefresh(); };

, но это не сработало.

Обратите внимание, что stopRefresh() функция работа с оставлением вкладки, то отменить интервал ...

в другой стороны, есть какой-то способ, что я могу перезагрузить Whan интервала возвращается Фро фона?

здесь полный контролер:

angular.module('starter.controllers', []) 

main.controller("temperatureCtrl", ["$scope", "$rootScope", "$window", "$interval", "ArduinoService", function($scope, $rootScope, $window, $interval, service) { 
    $rootScope.arduinoServerUrl = ''; 
    $rootScope.arduinoServerUrl = $window.localStorage['serverUrl']; 

    var autoRefresh; 
    $scope.channels = []; 

    function onTabSelected() { 
$rootScope.arduinoServerUrl = $window.localStorage['serverUrl']; 
} 

$scope.options = { 
loop: false, 
//effect: 'fade', 
speed: 500, 
} 
$scope.data = {}; 
$scope.$watch('data.slider', function(nv, ov) { 
$scope.slider = $scope.data.slider; 
}) 

function startRefresh() { 
autoRefresh = $interval(function() { 
    updateAjax(); 
}, 5000); 
} 


function updateAjax() { 
service.getChannels(function(err, result) { //get json data 
    if (err) { 
    return alert(err); 
    } 
    // puis les mets dans le scope 
    $scope.channels = result.channels; 
    }) 
}; 

$scope.init = function() { //on load page first get data 
updateAjax(); 
//startRefresh() 
} 


$scope.stopRefresh = function() { 
$interval.cancel(autoRefresh); 
}; 

$scope.restartRefresh = function() { 
startRefresh(); 
}; 

$scope.$on('$ionicView.leave', function() { 
// Make sure that the interval is destroyed when leaving tab 
$scope.stopRefresh(); 
}); 

$scope.$onunload=function(){ 
    // Make sure that the interval is destroyed when leaving app 
$scope.stopRefresh(); 
}; 

$scope.$on('$ionicView.enter', function() { 
//star or restart interval scope update 

$scope.restartRefresh(); 
}); 

$scope.$on('$destroy', function() { 
// Make sure that the interval is destroyed too 
$scope.stopRefresh(); 
}); 

}]); 

ответ

0

я, что вам нужно сделать некоторые одиночки класса, как в angularjs «сервис» или «завод». Как я делаю в своем коде, а затем в том, что вы просто отмените $ inerval при возобновлении события.

factory('BackgroundCheck', function($ionicPlatform){ 
    var service = {}; 
    var inBackground = false; 

    $ionicPlatform.ready(function() {   
     document.addEventListener("resume", function(){inBackground = false;}, false); 
     document.addEventListener("pause", function(){inBackground = true;}, false); 
    }); 

    service.isActive = function(){ 
     return inBackground == false; 
    } 
    return service;  
}) 

Я надеюсь, что это сработает для вас.

Спасибо ...

+0

это немного. Я новичок в угловой и никогда не использую фабрику ... попытаюсь понять, что есть ... но вы понимаете, что я хочу делать.: P. Могу ли я просто ввести интервал в функцию и отменить ее оттуда? на заводе нужно позвонить куда-нибудь? Я знаю, что я настоящий новичок ...: p – Nitrof