1.生命周期
由于页面通过ViewModel渲染,那么页面的生命周期指的也就是ViewModel的生命周期,包括常见的:onInit, onReady, onShow 在页面创建时触发调用
onInit()
表示ViewModel的数据已经准备好,可以开始使用页面中的数据
onReady()
表示ViewModel的模板已经编译完成,可以开始获取 DOM 节点(如:this.$element(idxxx))
onShow(), onHide()
APP 中可以同时运行多个页面,但是每次只能显示其中一个页面;这点不同与纯前端开发,浏览器页面中每次只能有一个页面,当前页签打开另一个页面,上个页面就销毁了;不过和 SPA 开发倒有点相似,切换页面但浏览器全局 Context 是共享的
所以页面的切换,就产生了新的事件:页面被切换隐藏时调用 onHide(),页面被切换重新显示时调用 onShow()
判断页面的显示状态,可以调用ViewModel的$visible属性:true表示显示,false表示隐藏
onDestroy()
页面被销毁时调用,被销毁的可能原因有:用户从当前页面返回到上一页,或者用户打开了太多的页面,框架自动销毁掉部分页面,避免占用资源
所以,页面销毁时应该做一些释放资源的操作,如:取消接口订阅监听geolocation.unsubscribe()
判断页面是否处于被销毁状态,可以调用ViewModel的$valid属性:true表示存在,false表示销毁
onBackPress()
当用户点击返回实体按键、左上角返回菜单时触发该事件
如果事件响应方法最后返回true表示不返回,自己处理业务逻辑(完毕后开发者自行调用 API 返回);否则:不返回数据,或者返回其它数据:表示遵循系统逻辑:返回到上一页
onConfigurationChanged(event) 1060+
监听应用配置发生变化。当应用配置发生变化时触发,如系统语言或主题模式改变,详细说明请参考文档
onReachTop() 1080+
监听页面是否触顶
onReachBottom() 1080+
监听页面是否触底
onPageScroll(event) 1080+
监听页面滚动
页面的状态
如上所述,APP 中允许多个页面同时存在并运行,但当前仅显示其中一个,因此每个页面就会处于多个状态的一个状态
显示:该页面就是当前 APP 正在显示的页面,用
v
i
s
i
b
l
e
判
断
隐
藏
:
该
页
面
上
打
开
新
页
面
后
,
该
页
面
被
隐
藏
,
用
visible判断 隐藏:该页面上打开新页面后,该页面被隐藏,用
visible判断隐藏:该页面上打开新页面后,该页面被隐藏,用visible判断
销毁:该页面因某原因销毁后,就不会再执行里面的代码,用$valid判断
APP 的生命周期
当前为 APP 的生命周期提供了七个回调函数:onCreate()、onRequest()1070+、onShow()1070+、onHide()1070+、onDestroy()、onError()1030+、onPageNotFound()1060+,可在app.ux中定义回调函数,详情及参数
页面样式与布局
1.采用怪异盒模型
Width = width(包含padding-left + padding-right + border-left + border-right)
Height = height(包含padding-top + padding-bottom + border-top + border-bottom)
2.设置定位
1060 开始,position 将支持三种属性值:relative、absolute 和 fixed,并且默认值为 relative
列表渲染
在快应用如果要实现列表渲染,我们会用到 for 指令。 for 指令用于循环输出一个数组类型的数据。
for指令根据源数据数组渲染列表,支持的写法如下(其中{{}}可以省略):
for="{{list}}":list为源数据数组,默认的数组元素名为
i
t
e
m
f
o
r
=
"
v
a
l
u
e
i
n
l
i
s
t
"
:
v
a
l
u
e
为
自
定
义
的
数
组
元
素
名
,
默
认
的
数
组
元
素
索
引
名
为
item for="{{value in list}}":value为自定义的数组元素名,默认的数组元素索引名为
itemfor="valueinlist":value为自定义的数组元素名,默认的数组元素索引名为idx
for="{{(index, value) in list}}":index为自定义的数组元素索引名,value为自定义的数组元素名
for指令的tid属性用于指定数组元素的唯一 Id,若未指定,默认使用数组索引($idx)作为唯一 Id。tid属性的作用在于元素节点重用,优化 for 循环的重绘效率