我使用$ interval并需要检测控制器何时被销毁。到目前为止,我已经使用了$ destroy事件并且它完美地运行了。例如,使用这个基本代码,当我转到另一个页面时(在myView.html中使用简单的<a href="#/myNewUrl">
),它会在控制台中打印&#34; destroy&#34; 。
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/
答案 0 :(得分:13)
您的模板是否已缓存?如果您的州路线中没有cache: false
,则控制器不会被销毁。
答案 1 :(得分:-2)
http://forum.ionicframework.com/t/how-to-destroy-controllers-in-ion-tab-directive/16658
这是Ionic开发团队的问候。你知道,他们喜欢泄漏记忆。
只需设置
$ionicConfigProvider.views.maxCache(0);
应该这样做