微信小程序使用template标签实现五星评分功能


Posted in Javascript onNovember 03, 2018

前言

微信小程序特点“无须安装,无须卸载,触手可及,用完即走”,适合轻量级应用快速开发。小程序模版思想是它开发的核心思想,可以帮助开发者减少很多重复代码,我们来看看怎么在小程序中实现市面上常用的评分组件, 看看效果图:

微信小程序使用template标签实现五星评分功能

创建模版

wxml文件:

以<template>为根节点,添加name属性用来区分不同模版:

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

wxss文件:

这里我们采用小程序推荐使用flex模型,横向排列五颗星星图片。

.stars-container {
 display: flex;
 flex-direction: row;
}
.stars {
 display: flex;
 flex-direction: row;
 height: 17rpx;
 margin-right: 24rpx;
 margin-top: 6rpx;
}
.stars image {
 padding-left: 3rpx;
 height: 17rpx;
 width: 17rpx;
}
.star-score {
 color: #1f3463;
}

模版使用

引用wxml模版:

<import src="../stars/stars-template.wxml" /> <!--这里引用模板文件最好使用相对路径-->
<template is="starsTemplate" data="{{stars:stars,score:average}}" /> <!--is指定使用模版的名称-->

引用wxss模版:

在使用模版文件对应的wxss文件中输入以下表达式即可

@import "../stars/stars-template.wxss";

数据装换:

我看到在使用模版wxml文件时有个data=“{{stars:stars,score:average}}”属性和数据,表示指定模版的数据,我们一般从后台获取的评分数据一般都是一个数字,比如:3.5,4,5等等,我们需要把这些数字转换成五个等级数组,决定评分星星显示什么图片,这里我们用1表示显示高亮的,0表示灰色星星,我们也可以在一个2表示半颗高亮的星星表示0.5的评分:

function convertToStarsArray(stars) {
 var num = stars.toString().substring(0, 1);
 var array = [];
 for (var i = 1; i <= 5; i++) {
  if (i < num) {
   array.push(1);
  } else {
   array.push(0);
  }
 }
 return array;
}

案例wxml代码:

<import src="stars/stars-template.wxml" />
<view style='margin:100rpx'>
 <template is="starsTemplate" data="{{stars:stars,score:average}}" />
</view>

到这里基本结束了,我们这评分转换成我们需要的评分数组,在使用模版的地方传入数据即可。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript 实现TreeView CheckBox全选效果
Jan 11 Javascript
AJAX使用了UpdatePanel后无法使用alert弹出脚本
Apr 02 Javascript
stream.js 一个很小、完全独立的Javascript类库
Oct 28 Javascript
js实现遮罩层划出效果是生成div而不是显示
Jul 29 Javascript
jquery.cookie.js用法实例详解
Dec 25 Javascript
vue.js 左侧二级菜单显示与隐藏切换的实例代码
May 23 Javascript
ExtJs异步无法向外传值和赋值的完美解决办法
Jun 14 Javascript
浅谈react前后端同构渲染
Sep 20 Javascript
vue实现模态框的通用写法推荐
Feb 26 Javascript
Vuex的初探与实战小结
Nov 26 Javascript
为vue项目自动设置请求状态的配置方法
Jun 09 Javascript
layui table 表格模板按钮的实例代码
Sep 21 Javascript
基于Vue-cli快速搭建项目的完整步骤
Nov 03 #Javascript
微信小程序实现笑脸评分功能
Nov 03 #Javascript
小程序实现五星点评效果
Nov 03 #Javascript
微信小程序实现星星评价效果
Nov 02 #Javascript
使用Object.defineProperty如何巧妙找到修改某个变量的准确代码位置
Nov 02 #Javascript
微信小程序实现点赞、取消点赞功能
Nov 02 #Javascript
Vue利用History记录上一页面的数据方法实例
Nov 02 #Javascript
You might like
PHP 定界符 使用技巧
2009/06/14 PHP
PHP面向对象编程之深入理解方法重载与方法覆盖(多态)
2015/12/24 PHP
php实现文件预览功能
2017/05/23 PHP
yii框架redis结合php实现秒杀效果(实例代码)
2017/10/26 PHP
php高清晰度无损图片压缩功能的实现代码
2018/12/09 PHP
asp.net+jquery滚动滚动条加载数据的下拉控件
2010/06/25 Javascript
设置checkbox为只读(readOnly)的两种方式
2013/10/11 Javascript
JS简单实现动画弹出层效果
2015/05/05 Javascript
详解支持Angular 2的表格控件
2017/01/19 Javascript
JS中setTimeout和setInterval的最大延时值详解
2017/02/13 Javascript
JavaScript引用类型Function实例详解
2018/08/09 Javascript
video.js 实现视频只能后退不能快进的思路详解
2018/08/09 Javascript
关于Vue项目跨平台运行问题的解决方法
2018/09/18 Javascript
jQuery简单实现根据日期计算星期几的方法
2019/01/09 jQuery
利用Webpack实现小程序多项目管理的方法
2019/02/25 Javascript
在Express中提供静态文件的实现方法
2019/10/17 Javascript
vue实现自定义多选按钮
2020/07/16 Javascript
[01:53]2016完美“圣”典风云人物:Maybe专访
2016/12/05 DOTA
[00:20]TI9不朽观赛名额抽取
2019/08/05 DOTA
python实现k均值算法示例(k均值聚类算法)
2014/03/16 Python
跟老齐学Python之正规地说一句话
2014/09/28 Python
Python使用matplotlib实现在坐标系中画一个矩形的方法
2015/05/20 Python
Python利用itchat对微信中好友数据实现简单分析的方法
2017/11/21 Python
python实现xlsx文件分析详解
2018/01/02 Python
Python2和Python3之间的str处理方式导致乱码的讲解
2019/01/03 Python
Python OpenCV 调用摄像头并截图保存功能的实现代码
2019/07/02 Python
Django框架静态文件使用/中间件/禁用ip功能实例详解
2019/07/22 Python
pytorch中nn.Conv1d的用法详解
2019/12/31 Python
Python基于pyecharts实现关联图绘制
2020/03/27 Python
纯CSS3绘制打火机动画火焰效果
2016/07/18 HTML / CSS
canvas简易绘图的实现(海绵宝宝篇)
2018/07/04 HTML / CSS
机电一体化自荐信
2013/12/10 职场文书
药品营销专业毕业生自荐信
2014/07/02 职场文书
租房安全协议书
2014/08/20 职场文书
MySQL Threads_running飙升与慢查询的相关问题解决
2021/05/08 MySQL
MySQL 常见存储引擎的优劣
2021/06/02 MySQL