Skip to Content

单选问卷

建议已具备学习基础:预约类小程序、一键登录、一对多数据模型 预计用时:40min 基础知识点:文字、图片 核心知识点:行为-条件、聚合、链接数据+算式数据

案例效果

单选问卷效果动画

重点逻辑

数据模型

  • 一个问题对应多个选项,选项有各自的得分,所以问题表与选项表是1对多关系,添加数据模型 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”
配置行为配置行为
  • 添加成功时行为“条件” 添加条件行为“跳转结果页”,条件设置为“远程数据/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”、“分”的拼接
Last updated on