讓我說我有一個控制器內像這樣的一段代碼,在一個角/離子應用:如何在ionicView.leave停止腳本
$scope.$on('$ionicView.beforeEnter', function() {
setTimeout(function() {
myFunction();
}, 5000)
});
當用戶離開映射到該控制器的URL在距離超時5秒之前,腳本不會停止(這是有道理的)。我的問題是:myFunction()
打開離子模式。
當用戶離開頁面並呈現另一個頁面時。但是,當渲染另一個視圖時,myFunction()將被觸發,然後,將在新視圖中顯示前一視圖中的離子模式。我在這個例子中使用了setTimeout()
,因爲我的代碼myFunction()
在ajax請求之後被調用(並且我無法控制響應時間)。
有沒有辦法阻止當前腳本在ionicView.leave事件中執行?
編輯:我發現$範圍有一個屬性$$斷開連接設置爲true,當視圖離開。我是否需要檢查這個值是否爲真或是否在我的函數中打開或不打開模態?而且,如果我有'n'個異步函數,是否必須在我所有的'n'函數中檢查這個?
編輯II:我實現了一個解決方案包裝myFunction的是()A $超時內,指派其返回一個變量,然後和在ionicView.leave,取消它:所以
modaltimeout = $timeout(function() { myFunction();)};
$scope.$on('$ionicView.leave', function() {
$timeout.cancel(modaltimeout);
});
,不管是什麼裏面myFunction的(),承諾將被取消,並沒有什麼事情發生:-)
你能重現問題的[plunker(http://plnkr.co /)? – LeftyX
http://plnkr.co/edit/hGGqHyC0X6xYH66uJRyo?p=preview使用左上方的菜單。更改爲「關於」然後快速切換回「主頁」。警報將彈出(它也會發生在ionicModal中)。 –