Rate评分组件点击半星后提交怎么只传整数?
我在做商品评分功能时遇到问题,用的是Ant Design的Rate组件设置了allowHalf属性,用户可以点半星。但后端要求提交时必须是整数,比如4.5要变成4或者5。我尝试在v-model绑定的变量里用Math.round处理,但发现点击半星时显示的星星会立刻变成整数,用户体验不好。
代码大概是这样写的:v-model="ratingValue",然后提交时用Math.round(ratingValue)。但测试时发现如果用户点了4.5星,星星图标会跳变到5星,这明显和用户的选择不符。有没有办法让图标保留半星显示,但提交时自动转成整数?
我试过用计算属性:
computed: {
submitValue() {
return Math.round(this.ratingValue)
}
}
但表单提交时还是原值,可能没绑定对地方…
我一般是这样处理的:
1. 在data里保留原始的评分值,比如:
2. 创建一个计算属性用于提交:
3. 在模板里继续用v-model绑定原始值:
4. 提交的时候用计算属性的值:
这样用户看到的还是他们选择的半星,但提交的时候会自动四舍五入。我用这个方法挺久的,很稳。你之前可能是表单绑定错了地方,检查一下是不是直接用了ratingValue而没用submitRating。
插件可以正常用,不需要额外装什么包。这个方法对其他评分组件也适用,原理都差不多。