Ionic生命周期

庆华 2019-07-01

ionic的生命周期

一、ionic的生命周期函数:

import {
        Component
    } from '@angular/core';
    
    @Component({
        template: 'Hello World'
    })
    class HelloWorld {
        ionViewDidLoad() {
            console.log("I'm alive!");
        }
        ionViewWillLeave() {
            console.log("Looks like I'm about to leave :(");
        }
    
        ionViewCanLeave(): boolean {
            // here we can either return true or false
            // depending on if we want to leave this view
            if (isValid(randomValue)) {
                return true;
            } else {
                return false;
            }
        }
    }
  • Pages的生命周期函数:

生命周期事件它被定义在不同的navigation状态期间,它们能被定义到任何push/pop在NavController中的组件。

  • Pages的生命周期函数列表:

ionViewDidLoad 当页面已经载入后,这个事件仅当页面被创建时执行一次。如果一个页面离开,但是已经缓存,那么后续的查看也不会触发。当为某个页面设置代码时,可放在该方法里。
ionViewWillEnter当页面将要进入并变成激活页面时触发。
ionViewDidEnter当页面已经进去并激活了,不管它是否是第一次载入还是一个缓存的页面,该事件都触发。
ionViewWillLeave当页面将要离开,将不再是一个激活的页面时触发。
ionViewDidLeave当页面已经离开,不是一个激活页面时触发。
ionViewWillUnload当页面将要销毁并移除其元素时触发。
ionViewCanEnter在视图可以进入之前运行。 这可以在经过身份验证的视图中用作一种“保护”,您需要在视图可以进入之前检查权限。
ionViewCanLeave在视图可以离开之前运行。 这可以在经过身份验证的视图中用作一种“保护”,您需要在视图离开之前检查权限。

二、angular的组件生命周期函数(Lifecycle Hooks)

ngOnChanges()
当Angular(重新)设置数据绑定输入属性时响应。当被绑定的输入属性的值发生变化时调用,首次调用一定会发生在ngOnInit()之前。
ngOnInit()
在Angular第一次显示数据绑定和设置指令/组件的输入属性之后,初始化指令/组件。在第一轮ngOnChanges()完成之后调用,只调用一次。
ngDoCheck()
检测,并在发生Angular无法或不愿意自己检测的变化时作出反应。在每个Angular变更检测周期中调用,ngOnChanges()和ngOnInit()之后。
ngAfterContentInit()
当把内容投影进组件之后调用。第一次ngDoCheck()之后调用,只调用一次。
只适用于组件。
ngAfterContentChecked()
每次完成被投影组件内容的变更检测之后调用。ngAfterContentInit()和每次ngDoCheck()之后调用,只适合组件。
ngAfterViewInit()
初始化完组件视图及其子视图之后调用。第一次ngAfterContentChecked()之后调用,只调用一次。只适合组件。
ngAfterViewChecked()
每次做完组件视图和子视图的变更检测之后调用。
ngAfterViewInit()和每次ngAfterContentChecked()之后调用。只适合组件。
ngOnDestroy
当Angular每次销毁指令/组件之前调用并清扫。 在这儿反订阅可观察对象和分离事件处理器,以防内存泄漏。在Angular销毁指令/组件之前调用。

@Directive({selector: '[mySpy]'})
export class SpyDirective implements OnInit, OnDestroy {

  constructor(private logger: LoggerService) { }

  ngOnInit()    { this.logIt(`onInit`); }

  ngOnDestroy() { this.logIt(`onDestroy`); }

  private logIt(msg: string) {
    this.logger.log(`Spy #${nextId++} ${msg}`);
  }
}

相关推荐