# 生命周期
手机 手表
了解卡片生命周期
通过本节,你将学会:
# 卡片生命周期
由于卡片通过ViewModel渲染,那么卡片生命周期指的也就是ViewModel的生命周期,包括常见的:onInit, onReady, onShow 在卡片页面创建时触发调用。
# onInit()
表示ViewModel的数据已经准备好,可以开始使用页面中的数据
示例如下:
data: {
// 生命周期的文本列表
lcList: []
},
onInit () {
this.lcList.push('onInit')
console.info(`触发:onInit`)
console.info(`执行:获取ViewModel的lcList属性:${this.lcList}`) // 执行:获取ViewModel的lcList属性:onInit
}
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# onReady()
表示ViewModel的模板已经编译完成,可以开始获取 DOM 节点(如:this.$element(idxxx))
示例如下:
onReady () {
this.lcList.push('onReady')
console.info(`触发:onReady`)
// 执行:获取模板节点:<div attr={} style={"flexDirection":"column"}>...</div>
console.info(`执行:获取模板节点`)
}
1
2
3
4
5
6
7
2
3
4
5
6
7
# onShow(), onHide()
APP 中可以同时运行多个页面,但是每次只能显示其中一个页面;这点不同与纯前端开发,浏览器页面中每次只能有一个页面,当前页签打开另一个页面,上个页面就销毁了;不过和 SPA 开发倒有点相似,切换页面但浏览器全局 Context 是共享的
所以页面的切换,就产生了新的事件:页面被切换隐藏时调用 onHide(),页面被切换重新显示时调用 onShow()
示例如下:
onShow () {
this.lcList.push('onShow')
},
onHide () {
console.info(`触发:onHide`)
}
1
2
3
4
5
6
2
3
4
5
6
# onDestroy()
卡片被销毁时调用,所以销毁时应该做一些释放资源的操作。
示例如下:
onDestroy () {
console.info(`触发:onDestroy`)
setTimeout(() => {
// 页面已销毁,不会执行
console.info(`执行:卡片已被销毁,不会执行`)
}, 0)
}
1
2
3
4
5
6
7
2
3
4
5
6
7
←
→
