首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

来扯点ionic3[3] 页面的生命周期事件(2)

来扯点ionic3[3] 页面的生命周期事件(2)

2.还有两个守卫钩子

我开头提到ionic提供了8个钩子,而我只介绍了6个。前6个钩子有个共性,他们的返回值都是void,即在相应时刻调用,不会返回任何的信息。

而另外两个钩子有些不太一样,它们是可以返回布尔值的ionViewCanEnter和ionViewCanLeave。
瞧瞧,刚刚讲了时态,现在开始讲情态动词了。如果前6个钩子是页面对用户来访的一种被动反应,那么现在,页面具有了意识,可以准许你来或者准许你走,啊,页面从此站起来了!

这两个钩子,更多扮演着权限控制的角色,最近有个很新潮的术语叫守卫(Guard),这个守卫怎么理解呢,你可以把它理解成小区的看门大爷、和蔼可亲的班主任,以及古代杏花楼里的姿态万千的老鸨2333。

既然我们已经知道它能返回布尔值,那么就来试一试吧。因为我们的程序里没有业务逻辑,这里就用一个时间的API来判断吧,我写这篇文章的时候是晚上11点,那么就用getHours来帮助我们测试。

    //和蔼可亲的班主任
        ionViewCanEnter() :boolean {
            if(new Date().getHours()>=8){
                console.log('怎么的呢,你看看现在几点了,你那么舒服咋不在家里接着睡吶,给我门外站着去!');
                return false;
            }
            return true;
        }
     
    //杏花楼姿态万千的老鸨
        ionViewCanLeave() :boolean {
            if(new Date().getHours()>=22){
                console.log('哎呀公子,你看都这么晚了,最近外面风声那么紧,不如就在我们这儿留宿吧,你看姑娘们都舍不得你回去呢');
                return false;
            }
            return true;
        }


动图:访问页面被拦截、

控制台打印的信息
同理,在页面中想离开,如果 ionViewCanLeave 返回了false,就会被阻拦。



动图:返回操作被拦截
返回列表