下午好,
我一直在努力解決一個不熟悉的問題。但首先讓我解釋我想要達到的目標。
目的
我想要做的是,在每個視圖設置定時器,因此,如果互聯網連接速度很慢的定時器調用,用於顯示ionicPopup有問題的功能:「你喜歡刷新視圖?「結合刷新按鈕。點擊按鈕後,視圖將刷新。如果視圖在時間上加載(我已將該定時器設置爲10000毫秒),則將調用$ timeout.cancel操作並停止定時器。
如果這將是所有它現在工作正常。
問題
如果我通過我的主要網頁瀏覽迅速,它看起來像計時器不會停止,「刷新彈出」另一個頁面上彈出。只有當你高速點擊時纔會發生這種情況。它看起來像是彈出一些彈出在對方下面。我不知道可能是什麼問題,但我想如果您快速瀏覽頁面,$ timeout.cancel不會被調用。
代碼
服務
.factory('Timer', function ($ionicPopup, $state, $timeout) {
return {
start: start
};
function start() {
return $timeout(showPopup, 10000);
}
function showPopup() {
$ionicPopup.show({
title: 'Slow internetconnection',
template: 'Click refresh to try again.',
buttons: [
{
text: 'Refresh',
onTap: function (e) {
$state.reload()
}
}
]
})
}
})
控制器
.controller('HomeCtrl', function ($scope, Request, Timer, $timeout) {
var timer = Timer.start();
Request.execute().finally(function() {
$timeout.cancel(timer);
})
$scope.$on('$destroy', function() {
$timeout.cancel(timer);
});
})
我希望我的問題是可以理解的。
你測試了'$超時嗎?取消(定時器)'調用實際上被稱爲?也許你的代碼永遠不會接到這些調用您可能想要查看Ionic View Events,而不是使用'$ destroy',如[here](http://ionicframework.com/docs/api/directive/ionView/)所列。 – Dexter
我測試過了,但是我在其他地方發現了問題。它現在是固定的!:) – Giovanni