微信小程序多商品评价评星提交
<form bindsubmit="submitComment">
<block wx:for="{{commentList}}" wx:key="{{item.g_id}}">
<view class="rating-top bgw">
<image src="{{url+item.thumb}}" class="proimg"></image>
<view class="rating-right">
<view class="">评分</view>
<view class="star-wrapper">
<block wx:for="{{starnum}}" wx:key="unique" wx:for-item="v">
<view class="star {{item.star>=v?'on':''}}" style="background-image:url({{star}})" bindtap="checkStar" data-num="{{v}}" data-id="{{item.g_id}}"></view>
</block>
</view>
</view>
</view>
<textarea auto-height class="rating-con bgw pd20" placeholder="请写下你对宝贝的感受吧,对其他人有很大帮助哦!" data-index="{{index}}" value="{{item.content}}" bindblur="saveContent"/>
</block>
<button class="submit" formType="submit">提交评价</button>
</form>
wxml页面结构如上。小程序的textarea组件的bindblur事件更新不及时,所以用form提交。
/**
* 星星选择
*/
checkStar: function (e) {
var commentList = this.data.commentList;
var id = parseInt(e.currentTarget.dataset.id);
var num = parseInt(e.currentTarget.dataset.num);
for (let i = 0, l = commentList.length; i < l; i++) {
if (commentList[i].g_id == id) {
commentList[i].star = num
}
}
this.setData({
'commentList': commentList
});
},
主要的难点在于双循环中要获取到上一个循环体当前索引,后来发现其实可以通过g_id而不是index来区分这是哪个商品的评价,这样一来就可以拿到每一个商品的星星评级。
/**
* 提交评价
*/
submitComment: function (e) {
var g_id = '';
var star = '';
var content = '';
var commentList = this.data.commentList;
for (var i = 0, len = commentList.length; i < len; i++) {
g_id += commentList[i].g_id + '>}';
star += commentList[i].star + '>}';
if (utils.judgeNull(commentList[i].content)) {
commentList[i].content = '系统默认好评'
}
// content.push(commentList[i].content);
content += commentList[i].content + '>}';
}
// console.log(content)
// console.log(g_id)
// console.log(star)
app.fetch1(API.addEvaluate,
{
uid: wx.getStorageSync('uid'),
user_id: wx.getStorageSync('user_id'),
g_id: g_id,
content: content,
star: star,
order_id: this.data.order_id }, (err, data) => {
console.log(data)
if (data.code == ERR_OK) {
wx.showToast({
title: '提交评价成功!',
icon: 'success',
duration: 2000
})
setTimeout(function () { wx.navigateBack({ }) }, 2000) } else {
wx.showToast({
title: data.msg,
icon: 'loading',
duration: 2000
})
}
})
},
提交的时候有个坑,原本传给后端的数据应该是三个数组,但是它自动转成了字符串,后端同事查过后发现无解(或者暂时无解),于是选择直接拼接字符串传递,原本打算通过“,”区分,考虑到评价内容中可能出现的“,”最后决定以“}>”作为分隔。
微信小程序多商品评价评星提交的更多相关文章
- 微信小程序之商品发布+编辑功能(多图片上传功能)
小程序的商品发布页面:功能有多图片上传 遇到的问题记录一下:1.uploadFile成功之后返回的参数是json字符串,一定要用JSON.parse转换为object格式 2.因为商品发布和编辑都是在 ...
- 微信小程序转发商品的详情页 + 转发功能(传参)
1.微信小程序转发传参,利用的还是onShareAppMessageapi 2.利用的还有json转换 JSON 是用于存储和传输数据的格式. JSON 通常用于服务端向网页传递数据 函数 描述JSO ...
- 微信小程序之商品属性分类
所提及的购物数量的加减,现在说说商品属性值联动选择. 为了让同学们有个直观的了解,到电商网截了一个图片,就是红圈所示的部分 现在就为大家介绍这个小组件,在小程序中,该如何去写 下图为本项目的图: wx ...
- 【微信小程序】request请求POST提交数据,记得要加上header
wx.request({ url: '*******', data: { "type":"nearest_village", "district&qu ...
- 微信小程序学习指南
作者:初雪链接:https://www.zhihu.com/question/50907897/answer/128494332来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明 ...
- 微信小程序电商实战-商品列表流式布局
今天给大家分享一下微信小程序中商品列表的流式布局方式,根据文章内容操作就可以看到效果哦~~~ 流式布局概念 流式布局也叫百分比布局 把元素的宽,高,margin,padding不再用固定数值,改用百分 ...
- 微信小程序 教程及示例
作者:初雪链接:https://www.zhihu.com/question/50907897/answer/128494332来源:知乎著作权归作者所有,转载请联系作者获得授权.微信小程序正式公测, ...
- 坑:微信小程序wx.request和wx.uploadFile中传参数的区别
微信小程序中通过组件<form>提交表单的时候,在js中通过e.detail.value得到所提交表单的json格式数据.一般提交表单我们都是通过wx.request请求,提交表单数据,通 ...
- 微信小程序教程系列
微信小程序教程系列 来源: https://blog.csdn.net/michael_ouyang/article/details/56846185 相关连接:http://blog.c ...
随机推荐
- Android_Gallery(画廊)
转:http://blog.csdn.net/tianjf0514/article/details/7521398 Gallery是画廊的意思,可以实现图片的浏览功能. 主要内容 Gallery控件的 ...
- 关于Async与Await的FAQ
=============C#.Net 篇目录============== 环境:VS2012(尽管System.Threading.Tasks在.net4.0就引入,在.net4.5中为其增加了更丰 ...
- 在.net core上,Web网站调用微信支付-统一下单接口(xml传参)一直返回错误:mch_id参数格式错误
这是 微信支付-统一下单 接口文档 一.问题描述 在调用统一下单接口时,报mch_id参数格式错误,但商户ID确实是10位数字正确的,可就是一直报这个错误 返回的错误xml如下: 二.排错过程 1.多 ...
- JS switch 分支语句
描述:根据一个变量的不同取值,来执行不同的代码. 语法结构: switch(变量) { case 值1: 代码1; break; case 值2: 代码2; break; case 值3: 代码3; ...
- CSS 常用的兼容性调试技巧
1.实现所有浏览器主页居中 Firefox下主页居中代码:.box{margin:0px auto} IE5.5下主页居中代码:body{text-align:center;} 将以上两种代码,合在一 ...
- IIR滤波器数字频带转换
<DSP using MATLAB>(Ingle & John Proakis)3ed,书中表8.2似乎不对. <Discrete Time signal processin ...
- Spring - 整合MyBatis
目的: 使用 Spring 容器用单例模式管理 MyBatis 的 sqlSessionFactory : 使用 Spring 管理连接池.数据源等: 将 Dao / Mapper 动态代理对象注入到 ...
- 笔记:Python异常处理与程序调试
Python异常处理与程序调试 Python提供了强大的异常处理机制,通过捕获异常可以提高程序的健壮性.异常处理还具有释放对象,中止循环的运行等作用.在程序运行的过程中,如果发生了错误,可以返回事先约 ...
- apache反向代理和监听多个端口设置
修改apache配置文件httpd.conf 一.监听多个端口 在Listen 80后添加监听端口,如 Listen 80 Listen 8080 Listen 8008 二.反向代理设置 1.取消一 ...
- (一)phonegap自学---不会java也会写原生app
移动设备如日中天的今天 微软的表现让我们这些.net程序员无不心寒!!幸好每次乱世出英豪,古有java能夸平台,.net跨语言,今有phonegap跨设备 phonegap是什么 狂点这 http:/ ...