2014-12-29 65 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