建议已有学习基础:预约类小程序、一键登录、一对多数据模型 预计用时:40min 基础知识点:文字、图片 核心知识点:行为-条件、聚合、链接数据+算式数据
案例效果
重点逻辑
数据模型
- 一个问题对应多个选项,选项有各自的得分,所以问题表与选项表是一对多关系,添加数据模型questions和choice,字段名如下
- questions:qcontent题目内容
- choice:choice选项内容,mark选项对应分数(错误选项0分,正确选项1分)
- 从questions向choice建立一对多关系
- 我们可以在账户表和选项表choice之间新建一个“中间表”数据模型answer来记录用户选了哪些选项 添加数据模型answer 从账户表向answer建立一对多关系,从choice向answer建立一对多关系 添加新字段mark,用于记录所选选项对应的分数
- 添加数据模型answer
- 从账户表向answer建立一对多关系,从choice向answer建立一对多关系
- 添加新字段mark,用于记录所选选项对应的分数完成效果如下:
跳转
- 项目包含三个页面,分别是开始答题页,答题页和答题结果页 在开始答题的页面中,点击“开始答题”按钮可以跳转到答题页,答完最后一题需要跳转到答题结果页
- 答题页自跳转 由于答题页的样式都一样,区别只在于题目和选项内容,所以我们不必设置多个页面, 只需通过让题号不断加1让页面刷新出对应的文字内容。此时的题号我们可以用链接数据来存储
- 利用链接数据实现正确的页面跳转
- 在答题页设置链接数据questionid
- 开始答题跳转答题页时赋值链接数据为1,那么答题页中就会显示第一题
- 从第一题按顺序答到最后一题只需设置跳转时questionid为questionid+1
- 当题号小于题目总量时,链接数据保持自增即可;当题号等于题目总量时,页面就需要跳转到答题结果页## 操作步骤
建立数据模型
开始答题页
开始答题按钮
- 新建页面“开始答题”、“答题页”、“答题结果”;
- 拖入按钮组件,将文本内容改为“开始答题”;
跳转答题页
- 在“答题”页面中新建链接数据questionid,类型为“整数”;
- 在“开始答题”页面设置“开始答题”按钮行为为“用户登陆→获取微信用户基本信息”,点开该行为,设置成功时跳转答题页,转换为“推入页面”,参数questionid为0;
答题页
显示用户信息
- 在页面中新建远程数据account,类型为账户,限额为1,设置过滤条件“ID等于已登陆用户/ID”
- 向页面拖入视图组件,设置样式中背景颜色为“FFA522”,圆角为14
- 双击视图组件进入聚焦视图 拖入图片组件,放在合适的位置,在内容中设置图片源为“图片”,点击下方“+”,选择“远程数据/account/用户头像” 拖入文字组件,放在合适的位置,在内容中设置文本为“远程数据/account/用户名”#
显示题目与选项
- 在页面中新建远程数据question,类型为questions,限额为1,设置过滤条件“ID等于链接数据/questionid”
- 向页面拖入文字组件,修改组件名称为题目_文字,在内容中设置文本为“远程数据/question/qcontent”
- 向页面拖入选择视图组件 在样式中打开多行 在内容中选择数据来源为“查询”,点开下方查询展开具体设置,选择列表“choice”,设置过滤条件为关系字段“question_questions等于链接数据/questionid” 双击选择视图组件进入聚焦模式 设置选中视图和被选中按钮与组件同宽,设置被选中按钮的文本内容为“项数据/choice/item/choice” 设置正常视图和正常按钮与组件同宽,设置正常按钮的文本内容为“项数据/choice/item/choice”
记录答案和跳转答题结果页
- 在页面中新建远程数据qcount,类型为questions,不设限额和过滤条件
- 双击选择视图组件进入聚焦模式,设置被选中按钮点击时行为为“修改表数据→添加answer” 参数设置 “account_账户”为“已登陆用户/ID” “choice_choice”为“选择器/选择视图/ID” “mark”为“选择器/选择视图/mark”
- 参数设置 “account_账户”为“已登陆用户/ID” “choice_choice”为“选择器/选择视图/ID” “mark”为“选择器/选择视图/mark”
img | img |
---|---|
- 添加成功时行为“条件” 添加条件行为“跳转结果页”,条件设置为“远程数据/qcount:count”等于“链接数据/questionid”,运算数类型为整数,actions设置为跳转-结果页面 添加条件行为“跳转下一题”,条件设置为“总是”,actions设置为跳转→答题页,参数questionid以算式数据赋值为questionid+1
计算当前得分
- 在页面中新建远程数据totalmark,类型为answer,不设限额,设置过滤条件为account_账户等于已登陆用户/ID
- 双击选择视图组件进入聚焦模式 拖入文字组件,放在合适的位置,在内容中设置文本为“当前得分” 拖入文字组件,放在合适的位置,在内容中设置文本为“远程数据/totalmark/mark:sum”
答题结果页
- 在页面中新建远程数据qcount,类型为questions,不设限额和过滤条件
- 在页面中新建远程数据totalmark,类型为answer,不设限额,设置过滤条件为account_账户等于已登陆用户/ID
- 拖入文字组件,在内容中设置文本为“您一共完成了”、“远程数据/qcount:count”、“道题”的拼接
- 拖入文字组件,在内容中设置文本为“您的得分是”、“远程数据/totalmark/mark:sum”、“分”的拼接