这篇文章主要介绍小程序中数据拷贝的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
成都创新互联公司-专业网站定制、快速模板网站建设、高性价比南涧网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式南涧网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖南涧地区。费用合理售后完善,10多年实体公司更值得信赖。
近期有帮同事做一个多商品评论的页面,多商品,顾名思义就是很多个商品,每个商品有星星评价,上传图片信息以及评论内容,
因为原先有写过公众号这个功能,于是自告奋勇的去写小程序的多商品评论了,结果就掉坑里了............
思路很简单 首先造一个星星的数组,五星好评就是五个星星的图片,是这样:
starList: [{ srca: "img/star02@3x.png", index: "1" }, { srca: "img/star02@3x.png", index: "2" }, { srca: "img/star02@3x.png", index: "3" }, { srca: "img/star02@3x.png", index: "4" }, { srca: "img/star02@3x.png", index: "5" }],
懒得取下标直接用index代表评分,然后根据后台返回的商品列表数组定义一个新数组pductList进行循环定义变量starLista赋值为数组
for(var i = 0; i < response.commoditys.length; i++) { response.commoditys[i].starLista = starList; }
同时有个多张图片上传的list同理进行操作,然后给循环出的星星绑定点击事件取它的下标和index进行判断循环每个商品下的星星数组动态更改src
for(var i = 0; i < app.dataList[index].starList.length; i++) { app.dataList[index].starList[i].srca = "img/star02@3x.png"; evaluateList[index].mark = idx + 1; if(i <= idx) { app.dataList[index].starList[i].srca = "img/star01@3x.png"; } evaluateList[index].mark = idx + 1; evaluateList[index].commodityid = cId; }
最后取pductList 你需要的值基本上就都在这个数组里面了 ,
--------------------------------------------------------------掉坑-----------------------------------------------
开始写小程序就按照这样的思路一直写写写,然而写到一半以后突然发现,我点击了一行小星星,所有的星星颜色都会变化,经历了排查以及抓耳挠腮 坐如针垫,东张西望之后,终于发现
在定义的新数组pductList中根据下标更改starLista 原来小星星的数组starList,最初定义的数组也会随之改变
又经历了百度 谷歌 csdn 博客园等等之后 终于想起一计,将原星星数组starList先转为字符串格式,在给定义的新数组pductList赋值的时候在转为json格式
let starListc=JSON.stringify(starList); for(let i = 0; i < response.commoditys.length; i++) { response.commoditys[i].starLista = JSON.parse(starListc); }
终于解决问题,应该是涉及到小程序的数据深拷贝的原因,这样处理一下更改的应该就是字符串而不会更改原数组,也考虑过在造个数组去赋值,但是没有这个方法简单粗暴,对于这个搞了一个早上的坑,谨以此贴,留作纪念,以及警醒自己。。。。。。。。。。。。。。。
以上是“小程序中数据拷贝的示例分析”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!
文章名称:小程序中数据拷贝的示例分析
URL分享:http://scyingshan.cn/article/jgssph.html