ページ上でデータを更新し続けるために、2 秒ごとにデータをポーリングしています。私の問題は、別のページにアクセスすると、タイムアウトがアクティブのままになることです。新しいページにアクセスしたときにタイムアウトをキャンセルするにはどうすればよいですか?
function IndexCtrl($scope, $timeout, RestData) {
$scope.rd = {};
(function getRestDataFromServer() {
RestData.query(function(data){
$scope.rd = data;
$timeout(getRestDataFromServer, 2000);
});
})();
}
//編集解決策を見つけましたが、それが良いものかどうかはわかりません。タイムアウトを $rootScope に保存すると、他のすべてのコントローラーでタイムアウトをキャンセルできます。
function IndexCtrl($scope, $rootScope, $timeout, RestData) {
$scope.rd = {};
(function getRestDataFromServer() {
RestData.query(function(data){
$scope.rd = data;
$rootScope.prom = $timeout(getRestDataFromServer, 2000);
});
})();
}
function newPageCtrl($scope, $rootScope, $timeout) {
$timeout.cancel($rootScope.prom);
}