实现表单数据暂存
在日常开发表单场景中,希望从其它页面返回时,表单字段值能停留上一编辑状态,尤其多字段表单,实现表单数据暂存,能大量节省填写表单时间,提升用户体验
实现思路
开发场景及客户端
- 客户端:适用 WEB 端和小程序
- 页面切换场景:
- 页面中通过自定义事件返回上一页面
- 通过 PC 端浏览器或移动端浏览器导航返回键返回上一页面
实现步骤
场景一:自定义事件返回上一页
针对在页面中通过自定义事件返回上一页的场景实现表单数据缓存
- 创建数据模型,字段结构如下图所示
- 在编辑器中使用表单容器组件,生成表单场景
- 添加「返回上一页」按钮并绑定“返回上一页”事件
- 新建自定义对象型变量 formSubMsg 用来存储表单值,并开启 缓存 开关
- 前往「返回上一页」按钮,编辑“返回上一页”事件,在成功分支中添加变量赋值方法,将表单前端输入值
$w.form1.value
赋值给变量 formSubMs - 将表单输入值绑定变量,这里以「姓名」字段为例,输入值绑定表达式:
$w.page.dataset.state.formSubMsg.xm?$w.page.dataset.state.formSubMsg.xm:''
- 从其它页面配置页面跳转事件,前往上述页面
- 在表单页面填写表单信息,填写完成之后,点击返回上一页
- 返回上一页成功
- 再次前往表单页,可以看到表单自动填充了上一次表单填写值,其中可以看到变量 formSubMs 运行值状态
场景二:监听浏览器返回上一页
针对在页面中通过通过 PC 或移动端浏览器导航返回键返回上一页的场景实现表单数据缓存
- 步骤同上述场景 1、2 步
- 新建全局变量 form_data 用来存储表单值,并并开启 缓存 开关
- 前往代码编辑器
- 在表单页面的生明周期 onPageUnload 中,添加相关代码
async onPageUnload() {
//将表单值赋值到缓存
await $w.utils.setStorage({ key: 'form_cache', data: $w.form1.value });
//取缓存值重新赋值给全局变量form_data
$w.app.dataset.state.form_data = (await $w.utils.getStorage({ key: 'form_cache' })).data
console.log('form_data',JSON.stringify($w.app.dataset.state.form_data))
},
- 将表单输入值绑定变量,这里以「姓名」字段为例,输入值绑定表达式:
$w.app.dataset.state.form_data.xm?$w.app.dataset.state.form_data.xm:''
- 同场景一步骤 7
- 预览模式下,监听浏览器返回
- 从其它页面再次前往表单页,可以看到表单已自动填充上一次编辑值