微信小程序——星星评分
先来个效果图镇楼:

实现原理:
1.循环需要评分的列表,判断它的分数 与 当前星星索引的大小;
2.点击,获取星星对应的分数,让星星高亮。
代码:
star.wxml:
<view class="weui-cells {{!margin ? 'weui-cells__mt0' : ''}}">
<view class='weui-cell' wx:for="{{subjectStarList}}" wx:key="id" wx:for-item="subjectStar" wx:for-index="subIdx">
<view class='weui-cell__bd'>
{{subjectStar.name}}
</view>
<view class='weui-cell__ft'>
<view class='score-list'>
<ss-icon wx:for="{{stars}}" wx:for-item="stars" name="star-full" custom-class=" score-item {{subjectStar.score > index ? 'active' : ''}} " data-sub-idx="{{subIdx}}" data-score="{{stars}}" bind:click="grade"></ss-icon>
</view>
</view>
</view>
</view>
上面的ss-icon 是我自定义的一个组件,点击查看。
主要代码说明:
{{subjectStar.score > index ? 'active' : ''}} —— 当前的分数如果大于当前星星的索引,就给它添加 active 样式,就是让它变成高亮黄色;
data-sub-idx="{{subIdx}}" —— 获取你当前点击的是第几项
data-score="{{stars}}" —— 当前你的星星对应的是几分
star.js:
// components/star/index.js
Component({
options: {
addGlobalClass: true,
}, /**
* 组件的初始数据
*/
data: {
subjectStarList: [{
id: 1,
name: '学校表现',
score: 1
}, {
id: 2,
name: '作业完成情况',
score: 4
}, {
id: 3,
name: '爱护同学',
score: 0
}],
stars: [1, 2, 3, 4, 5]
},/**
* 组件的方法列表
*/
methods: {
grade: function(e) {
let that = this;
let score = e.currentTarget.dataset.score;
let subIdx = e.currentTarget.dataset.subIdx;
let subScore = `subjectStarList[${subIdx}].score`;
//只有一颗星的时候,再次点击,变为0颗
if (that.data.subjectStarList[subIdx].score == 1 && score == 1) {
score = 0;
}
that.setData({
[subScore]: score,
});
},
}
})
注意!!我是把这个评分功能做成的一个组件形式,所以js 文件里面主要是组件写法。这里主要介绍一下它的原理~
微信小程序——星星评分的更多相关文章
- 微信小程序动态评分展示/五角星展示/半颗星展示/自定义长度展示
一.前言 项目中遇到的评分相关的需求其实还挺多.之前也写过网页中关于评分功能实现的文档.这次,是基于微信小程序开发而提炼出一个简单方便使用的方法,网页开发中同样可用.这次使用的还是字体,主要是字体这个 ...
- 微信小程序之评分页面
首先给大家看看做好的效果图: 一.接下来我们说一下评分这个功能: 实际上就是一个简单的js,首先我们遍历出小星星,此时默认给的五星好评,在给他们一个点击事件,当点击时,我们获取到当前点击的是第几颗:代 ...
- 微信小程序 - 五星评分(含半分)
转载自:http://blog.csdn.net/column/details/13721.html 演示: 下载:小程序-星级评论.zip
- 微信小程序星星评价
https://www.jianshu.com/p/4d7359dfa040
- 微信小程序滚动动画,点击事件及评分星星制作!
前言 小程序上线刷爆了朋友圈,但是最近渐渐消沉了,很少有动静!最近公司项目需要,体验了一下微信小程序,制作了几个功能,布局感觉很简单,但是交互和动画等写起来确实很费劲,主要是因为他不能操作DOM,只能 ...
- 边做边学入门微信小程序之仿豆瓣评分
微信小程序由于适用性强.逻辑简要.开发迅速的特性,叠加具有海量活跃用户的腾讯公司背景,逐渐成为了轻量级单一功能应用场景的较佳承载方式,诸如电影购票.外卖点餐.移动商城.生活服务等场景服务提供商迅速切入 ...
- 微信小程序开发 [06] 一些补充的知识点
0.写在前面的话 前几章的内容串联起来,基本上已经能写比较基础的小程序页面逻辑了,当然,wxml和wxss的我并没有写,因为前端我也并不擅长.这个章节,准备随便叨叨,然后补充一些之前没有提到的基础知识 ...
- 微信小程序学习指南
作者:初雪链接:https://www.zhihu.com/question/50907897/answer/128494332来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明 ...
- python flask框架学习(三)——豆瓣微信小程序案例(一)templates的使用,宏的使用,前端后台传数据,前端写python语句
目录 一.templates的使用 (1)在templates里创建一个index.html (2)再在app.py里写 (3)展示效果 二.构建第一个电影评分 (1)准备好素材放进static里的i ...
随机推荐
- 持续集成(1)gitlab的安装
操作系统:centos 6.5 关闭selinux # 修改/etc/selinux/config 文件 将SELINUX=enforcing改为SELINUX=disabled ,然后重启电脑 # ...
- Webbench是有名的网站压力测试工具
[root@666 webbench-1.5]# yum install ctags [root@666 webbench-1.5]#make && make install inst ...
- /etc/sudoers文件设置为允许用户在不输入该用户的密码的情况下使用所有命令
设置用户666在不输入该用户的密码的情况下使用所有命令: /etc/sudoers ALL=(ALL) NOPASSWD:ALL # ALL=(ALL) ALL #sudo su - 时是需要输入66 ...
- 菜鸟学Java(二十一)——如何更好的进行单元测试——JUnit
测试在软件生命周期中的重要性,不用我多说想必大家也都非常清楚.软件测试有很多分类,从测试的方法上可分为:黑盒测试.白盒测试.静态测试.动态测试等:从软件开发的过程分为:单元测试.集成测试.确认测试.验 ...
- scikit
http://scikit-learn.org/dev/_downloads/scikit-learn-docs.pdf http://scikit-learn.org/stable/tutorial ...
- Pycharm 2017.1 激活服务器
最近发现pycharm激活异常困难 原来的激活码 都不能用了 so 根据网上 教程 自己建了激活服务器 尝试可用服务器 20170504 测试发现 给需要域名 http://www.05nb.com: ...
- (原创)C++11改进我们的程序之简化我们的程序(一)
C++11在很多方面可以简化我们的程序开发,我会在“简化我们的程序”这一系列的博文中一一讲到,敬请关注.这次要讲的是:C++11如何通过获取函数模板的返回值类型来简化我们的程序.在谈到简化之前,我们先 ...
- 每日英语:Making the Most of Your Lunch Hour
More Americans are eating lunch at their desks or even forgoing it altogether. Is passing up a prope ...
- HBase写入性能改造(续)--MemStore、flush、compact参数调优及压缩卡的使用【转】
首先续上篇测试: 经过上一篇文章中对代码及参数的修改,Hbase的写入性能在不开Hlog的情况下从3~4万提高到了11万左右. 本篇主要介绍参数调整的方法,在HDFS上加上压缩卡,最后能达到的写入 ...
- 【线程】linux之thread错误解决方案
1.错误现象: undefined reference to 'pthread_create' undefined reference to 'pthread_join' 2.问题原因: pt ...