13

我使用 $interval 并且需要检测控制器何时被破坏。到目前为止,我已经使用了 $destroy 事件并且它运行良好。例如,使用这个基本代码, 当我转到另一个页面时,它会在控制台中打印“destroy”<a href="#/myNewUrl"> (在 myView.html 中有一个简单的)。

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

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

}]);

但是由于我将 Ionic 更新到了新版本(v1.0.0-beta.14),它也使用了 Angular 的新版本(v1.3.6),所以当我转到另一个页面时,不会检测到 $destroy 事件。

有人遇到同样的问题吗?我该如何解决?谢谢您的回答!


编辑

我终于解决了问题!!!现在,使用新的 Ionic 版本,视图会自动缓存。添加cache-view="false"模板禁用它。

但是我找到了比破坏事件更好的方法。Ionic 添加了新事件(在$ionicView上),现在您可以检测何时离开页面(并且页面保持缓存)$ionicView.leave:.

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

4

2 回答 2

13

你的模板缓存了吗?如果您cache: false的状态中没有路由,则控制器不会被破坏。

于 2015-01-08T21:58:02.777 回答
-3

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

这是来自 Ionic 开发团队的问候。你看,他们喜欢泄漏内存。

刚设置

$ionicConfigProvider.views.maxCache(0);

应该这样做

于 2015-10-15T10:55:31.890 回答