微信小程序——星星评分

先来个效果图镇楼:

 

实现原理:

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 文件里面主要是组件写法。这里主要介绍一下它的原理~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值