2014-12-29 109 views
12

我使用$ interval並需要檢測控制器何時被銷燬。到目前爲止,我已經使用了$ destroy事件並且它完美地運行了。例如對於這個基本的代碼,當我轉到另一個頁面(在myView.html中有一個簡單的<a href="#/myNewUrl">)時,它會在控制檯中打印「銷燬」

angular.module('myModule').controller('myController', ['$scope', function($scope) { 

    $scope.$on('$destroy', function() { 
     console.log('destroy'); 
    }); 

}]); 

,因爲我更新離子到新版本(V1.0.0-beta.14),使用新版本的角度太(v1.3.6),的$破壞事件不是當我轉到另一頁時檢測到

有沒有人得到同樣的問題?我該如何解決它? 謝謝你的回答!


編輯

我終於解決了這一問題!現在,隨着新的Ionic版本,視圖被自動緩存。在模板中添加cache-view="false"將其禁用。

但我發現一個最好的辦法比破壞事件。 Ionic添加了新事件(在$ ionicView),現在您可以檢測何時離開頁面(並且頁面保持緩存):$ionicView.leave

要獲得更多信息:http://ionicframework.com/docs/nightly/api/directive/ionView/

回答

12

是您的模板緩存?如果你的狀態路由沒有cache: false,那麼控制器不會被銷燬。

+0

這是不在狀態的路線,但問題是爲高速緩存,感謝您的幫助!我在狀態路由的選項中找不到任何內容,但在離子視圖中添加'cache-view =「false」',它可以工作。 –

-2

http://forum.ionicframework.com/t/how-to-destroy-controllers-in-ion-tab-directive/16658

這是一個從離子開發團隊的問候。你看,他們喜歡泄漏記憶。

只需設置

$ionicConfigProvider.views.maxCache(0);

應該這樣做

+1

多麼有見地的評論。該案例已被覆蓋:http://ionicframework.com/docs/api/directive/ionView/。您可以檢測緩存視圖何時離開,並按照提問者的要求進行相應操作。 –

+1

請堅持中立的事實建議,並備份證據。 ''這是來自Ionic開發團隊的你好,他們喜歡泄漏內存,你看。「」聽起來更像是粗魯的意見。你的鏈接沒有說什麼來確認他們喜歡泄漏內存。 – redfox05