微信小程序学习笔记之星级组件封装

微信小程序学习笔记之星级组件封装
首先是用template标签创建一个星级组件

<template name="starsTemplate">
  <view class="stars-container">
    <view class="stars">
      <block wx:for="{{stars}}" wx:for-item="i">
        <image wx:if="{{i}}" src="/images/icon/star.png"></image>
        <image wx:else src="/images/icon/none-star.png"></image>
      </block>
    </view>
    <text class="star-score" data="{{score}}">{{score}}</text>
  </view>
</template>

在创建一个公共文件夹用来存放星星组件的方法

function SetStarArr(stars,setstarkey){
  var arr = []
  var newStarArr=[]
  stars.map((ele,index)=>{
    var num = ele.toString().substring(0, 1);
    for (var i = 1; i <= 5; i++) {
      if (i <= num) {
        arr.push(1)
      } else if (i == num) {
        arr.push(0)
      } else {
        arr.push(0)
      }
    }
  })
  // 将数组平均分割
  for (var i = 0, len = arr.length; i < len; i += 5) {
    newStarArr.push(arr.slice(i, i + 5)) 
  }
  return newStarArr
}

export default SetStarArr

然后在数据渲染处调用此方法方法

getJSON:function(url, setKey,setStars,titlename,titlevalue){
    wx.request({
      url: url,
      header: {
        'content-type': 'json'
      },
      method: "get",
      success: (res) => {
        let obj = {};
        let arr=[];
        let newStarArr=[]
        obj[setKey] = res.data.subjects
        obj[titlename] = titlevalue
        for (let i = 0;i<res.data.subjects.length; i++){
          arr.push(res.data.subjects[i].rating.stars)
          if (res.data.subjects[i].title.length >= 6) {
            // console.log(res.data.subjects[i].title.Substring(0, 5)+"...")
            var str = res.data.subjects[i].title
            str = str.substring(0, 7) + "..."
            res.data.subjects[i].title = str
          }
        }
       //调用上面那个方法
        obj[setStars] = SetStarArr(arr, setStars)
        this.setData(obj)
      }
    })
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT、木昜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值