关于ion-view的生命周期及相关事件

在ionic的开发中,ion-view的生命周期中的事件触发是在必须要清楚了解的一个问题:

$ionicView.loaded   当view第一次被加载的时候触发,一般而言当view开启缓存的时候,一个view仅被创建一次。官方文档建议可以通过监听该事件对view进行一些前期的工作(如变量初始化等)

$ionicView.enter 进入view时触发,无论该view是第一次被创建后进入还是直接进入的缓存的view

$ionicView.leave 完全离开view时触发,无论此时view是被销毁了还是缓存了

$ionicView.beforeEnter  $ionicView.enter前触发

$ionicView.beforeLeave $ionicView.leave前触发

$ionicView.afterEnter $ionicView.enter后触发

$ionicView.afterLeave $ionicView.leave后触发

$ionicView.unloaded 当view被销毁时触发

具体的使用方法如下:

       

rootModule.controller('ChatDetailCtrl', function($scope) {

    $scope.$on('$ionicView.enter',function(){
       console.log("enter");
    });

    $scope.$on('$ionicView.loaded',function(){
        console.log("loaded");
    });

    $scope.$on('$ionicView.leave',function(){
        console.log("leave");
    });

    $scope.$on('$ionicView.beforeEnter',function(){
        console.log("beforeEnter");
    });

    $scope.$on('$ionicView.beforeLeave',function(){
        console.log("beforeLeave");
    });

    $scope.$on('$ionicView.afterEnter',function(){
        console.log("afterEnter");
    });

    $scope.$on('$ionicView.afterLeave',function(){
        console.log("afterLeave");
    });

    $scope.$on('$ionicView.unloaded',function(){
        console.log("unloaded");
    });

});
   

测试: 在未开启缓存的情况下,点击进入该view之后按返回键,结果如下:

loaded
beforeEnter
enter
afterEnter
beforeLeave
leave
afterLeave
unloaded



目前存在一个疑问,在按返回键之后会触发unloaded而不是将其进行缓存,按照官方文档的说法,ionic会默认缓存10个view,猜测可能是因为在chrom浏览器中调试而带来的不同。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值