【问题标题】:The event $scope.$on('$destroy') doesn't work updating ionic & angular事件 $scope.$on('$destroy') 无法更新 ionic & angular
【发布时间】:2014-12-29 14:00:46
【问题描述】:

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

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/

【问题讨论】:

    标签: angularjs ionic


    【解决方案1】:

    您的模板是否已缓存?如果你的状态路由中没有cache: false,那么控制器不会被销毁。

    【讨论】:

    • 它不在状态路由中,但问题出在缓存中,感谢您的帮助!我在状态路由的选项中没有找到任何内容,但在离子视图中添加cache-view="false",它可以工作。
    【解决方案2】:

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

    Ionic 开发团队向您问好。你看,他们喜欢泄露内存。

    刚刚设置

    $ionicConfigProvider.views.maxCache(0);

    应该这样做

    【讨论】:

    • 多么自以为是的评论。该案已被报道:ionicframework.com/docs/api/directive/ionView。您可以检测缓存视图何时离开,并按照询问者的要求采取相应措施。
    • 请坚持中立的事实建议,并提供证据支持。 "It's a hello from Ionic dev team. They like to leak memory, you see." 听起来更像是粗鲁的意见。您的链接没有说明他们喜欢泄漏内存。
    猜你喜欢
    • 1970-01-01
    • 2015-02-14
    • 1970-01-01
    • 1970-01-01
    • 2017-06-06
    • 1970-01-01
    • 1970-01-01
    • 2016-09-01
    相关资源
    最近更新 更多