白云追赶着晚风,却让花朵羞红,溪水奔走于山峰,喧扰着自由的喜悦
我躺在彩虹的怀抱,陶醉在馥郁芬芳
你千万别像风,在我这里掀起万般波澜,却又跟云去了远方

这是一篇《微信小程序-超简单-处理Push新增数组和更新二维数组字段,Push返回对象为1》的续作;或者说他们最终是要实现题库答题微信小程序案例源码展示,前一篇提供了在开发过程中遇到问题学习方案。这篇则是学习成果
题库答题小程序和表单小程序概念基本是差不多的,无非是一个有上下题切换,另一个是上下滑动。他们的开发思路差距不大可以套用
功能
案例中源码核心功能在于
- 本地数组记录做题答案
- 上下题切换能记录之前数值
- 上题可以实时更新选项

源码
若只想看下思路可以直接阅读js部分,需要整体案例在文章末尾下载
// index.js // 获取应用实例 const app = getApp() Page({ data: { active: 0,//当前题目索引值 number: '',//总题目长度值 changeValue: '',//当前选择选项 frData: [],//记录题目选择数组 items: [//本地测题库 [{value: '《小王子》',checked: false,inds: 0}, {value: '《人间草木》',checked: false,inds: 1}, {value: '《致D》',checked: false,inds: 2}, ], [{value: '《从你的全世界而路过》',checked: false,inds: 0}, {value: '《云边有个小卖铺》',checked: false,inds: 1 }, { value: '《天堂旅行团》',checked: false,inds: 2}, ], [{ value: '《少有人走的人》',checked: false,inds: 0}, {value: '《他人的力量》',checked: false,inds: 1}, {value: '《我们总是孤独成长》',checked: false,inds: 2}, ] ] }, onLoad() { // 获取题目数量 this.subject(); }, // 获取题目数量 赋值给number subject() { this.setData({ number: this.data.items.length }) }, // 下一题 nextPage() { if (this.data.active > this.data.number - 2) { wx.showToast({ title: '已是最后一题', icon: 'error', duration: 2000 }) } else { this.setData({ active: this.data.active + 1 }) } // 执行保存数据函数 this.pageFrData(); }, // 上一题 uptPage() { if (this.data.active < this.data.number - 2) { wx.showToast({ title: '已是第一题', icon: 'error', duration: 2000 }) } else { this.setData({ active: this.data.active - 1, }) //获取之前选择的数值 var chan = this.data.frData[this.data.active].changeValue; if(chan != ''){ this.data.items[this.data.active][chan].checked = true this.setData({ items: this.data.items }) } } }, // 获取选中数值 radioChange(e) { console.log('radio发生change事件,携带value值为:', e.detail.value) this.setData({ changeValue: e.detail.value }) // 和之前数组对比查看是否存在 若有存在 则判断是否有更新选项 随后赋值 var indexLists = this.data.frData.find((item, index) => { return index == this.data.active; }) if(indexLists != undefined){ if(this.data.frData[this.data.active].changeValue != this.data.changeValue){ this.data.frData[this.data.active].changeValue = this.data.changeValue console.log('复制一样',this.data.frData[this.data.active].changeValue,this.data.changeValue) this.setData({ frData:this.data.frData }) } } }, // 当前选择保存到数组 pageFrData() { var date = { active: this.data.active, changeValue: this.data.changeValue }; // 判断之前数组知否存在 如果存在则获取之前选择数值。若不存在则push数组 var indexLists = this.data.frData.find((item, index) => { return index == this.data.active; }) if(indexLists == undefined){ this.data.frData.push(date); this.setData({ "frData": this.data.frData, changeValue: "" }) }else{ var chan = this.data.frData[this.data.active].changeValue; if(chan != ''){ this.data.items[this.data.active][chan].checked = true this.setData({ items: this.data.items }) } } } })
源码下载
https://yinfengrui.lanzoub.com/iVPnc0eacqkd