微信小程序实现点赞业务


Posted in Javascript onFebruary 10, 2021

本文实例为大家分享了微信小程序实现点赞业务的具体代码,供大家参考,具体内容如下

一、效果

微信小程序实现点赞业务

二、实现

1.逻辑

1.从登录界面时,用户数据已经缓存到本地,在onload中从本地获取用户信息保存在data.userInfo中
2.判断用户的_openid是否在loveList返回的列表中,如果是取消赞,如果不是点赞加入昵称到loveList中
3.下面用的是nickName判断,后期优化成使用_openid判断

微信小程序实现点赞业务

微信小程序实现点赞业务

微信小程序实现点赞业务

微信小程序实现点赞业务

2.wxml

<!-- 
 wx:index = "index":列表循环后所有位置都可以访问索引
 -->
<view class="item" wx:for="{{list}}" wx:index = "index">
 <view class="left">
 <image class="avatar"></image>
 </view>
 <view class="right">
 <view class="nickname">{{item.nickName}}</view>
 <view class="content">{{item.content}}</view>
 <view class="image-list">
  <image class="image" wx:for="{{item.imageList}}"></image>
 </view>
 <view class="time-area">
  <view class="time">{{item.time}}</view>
  <view>
  <!--
   data-index="{{index}}"
   1.设置后在回调函数中currentTarget.dataset中显示
   -->
  <image class="operation-button" src="../../images/caozuo.png" catchtap="showOperationPannel" data-index="{{index}}"></image>
  <!-- 判断当前索引和面盘索引是否一致 -->
  <view class="operation-pannel" wx:if="{{showOperationPannelIndex == index}}">
   <!-- 设置索引和点击函数 -->
   <view class="tab" catchtap="clickLove" data-index="{{index}}">
   <image class="image" src="../../images/love-white.png"></image>
   <text>赞</text>
   </view>
   <view class="tab">
   <image class="image" src="../../images/comment-white.png"></image>
   <text>评论</text>
   </view>
  </view>
  </view>
  
 </view>
 <view class="love-comment">
  <!-- 
  item.loveList=重复
  item.loveList
  <view class="love" wx:if="{{item.loveList.length > 0}}">
  <image class="love-icon" src="../../images/love-blue.png"></image>
  <text class="love-nickname" wx:for="{{item.loveList}}">老夫子 兰陵王</text>
  </view>
  -->
  <view class="love" wx:if="{{item.loveList.length > 0}}">
  <image class="love-icon" src="../../images/love-blue.png"></image>
  <!-- love和整个循环的item不冲突 -->
  <text class="love-nickname" wx:for-items="{{item.loveList}}"
  wx:for-item = "love"
  >{{love.nickName}}</text>
  </view>
  <view class="comment" wx:if="{{item.commentList.length > 0}}">
  <view wx:for-items="{{item.commentList}}"
  wx:for-item = "comment">
   <text class="comment-nickname">{{comment.nickName}}</text>
   <text class="comment-content">{{comment.content}}</text>
  </view>
  </view>
 </view>
 </view>
</view>

3.js

// pages/circle/list.js
var that;
Page({

 /**
 * 页面的初始数据
 */
 data: {
 userInfo:null,
 list:[],
 // 当前点击操作面板的索引,每条朋友圈一个面板
 showOperationPannelIndex:-1,
 },

 /**
 * 生命周期函数--监听页面加载
 */
 onLoad: function (options) {
 that = this;
 for (var i = 1; i < 10; i++) {
  // 定义一个对象存储数据
  var circleData = {};
  circleData.nickName = "朋友-" + i;
  circleData.content = "朋友发布内容-" + i;
  circleData.time = "2020-05-0" + i;

  //图片列表
  var imageList = [];
  // 点赞列表
  var loveList = [];
  // 评论列表
  var commentList = [];


  // 这三个数组赋值给circleData
  circleData.imageList = imageList;
  circleData.loveList = loveList;
  circleData.commentList = commentList;

  // 给3个数组赋值
  for (var j = 1; j < i; j++) {
  // 图片路径,占位
  imageList.push(j);
  // loveList,定义loveData对象
  var loveData = {};
  loveData.nickName = '点赞-' + j;
  // 点赞数组加入loveList
  loveList.push(loveData);

  // 评论数据
  var commentData = {};
  commentData.nickName = "兰陵王-" + j + ":";
  commentData.content = "评论内容-" + j;
  // 加入数据
  commentList.push(commentData);
  }

  that.data.list.push(circleData);
 }
 // 重新渲染
 that.setData({
  list: that.data.list
 })
 //获取用户信息
 wx.getStorage({
  key: 'userInfo',
  success(res){
  //转换成对象
  console.log("getStorage success:",JSON.parse(res.data));
  that.setData({
   userInfo:JSON.parse(res.data)
  })
  }
 })
 },
 //控制操作面板展示
 showOperationPannel(e){
 console.log("showOperationPannel",e);
 // 获取点击的索引
 var index = e.currentTarget.dataset.index;
 // 如果正在展示,则关闭
 if(that.data.showOperationPannelIndex == index){
  that.setData({
  // 索引从0开始
  showOperationPannelIndex:-1
  })
 }
 else{
  that.setData({
  // 设置成当前点击的索引
  showOperationPannelIndex:index
  })
 }
 
 },
 // 点赞功能
 clickLove(e){
 console.log(e);
 var index = e.currentTarget.dataset.index;
 // 将这条数据取出
 var circleData = that.data.list[index];
 var loveList = circleData.loveList;
 var isHaveLove = false;
 for(var i = 0; i < loveList.length; i++){
  if(that.data.userInfo.nickName == loveList[i].nickName){
  isHaveLove = true;
  // 移除点赞
  loveList.splice(i,1);
  break;
  }
 }

 if(!isHaveLove){
  loveList.push({nickName:that.data.userInfo.nickName});
 }
 that.setData({
  list:that.data.list,
  // 关闭点赞评论面板
  showOperationPannelIndex:-1
 })

 },
 
})

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

Javascript 相关文章推荐
上传的js验证(图片/文件的扩展名)
Apr 25 Javascript
浅析JavaScript原型继承的陷阱
Dec 03 Javascript
jQuery Migrate 1.1.0 Released 注意事项
Jun 14 Javascript
基于jQuery实现的双11天猫拆红包抽奖效果
Dec 01 Javascript
javascript禁止超链接跳转的方法
Feb 02 Javascript
JavaScript简单获取页面图片原始尺寸的方法
Jun 21 Javascript
Bootstrap 网格系统布局详解
Mar 19 Javascript
微信小程序 支付功能实现PHP实例详解
May 12 Javascript
Node.js利用js-xlsx处理Excel文件的方法详解
Jul 05 Javascript
JS获取填报扩展单元格控件的值的解决办法
Jul 14 Javascript
vue resource发送请求的几种方式
Sep 30 Javascript
写给新手同学的vuex快速上手指北小结
Apr 14 Javascript
JS获取一个字符串中指定字符串第n次出现的位置
Feb 10 #Javascript
JavaScript canvas实现跟随鼠标移动小球
Feb 09 #Javascript
javascript实现简单留言板案例
Feb 09 #Javascript
javascript实现下拉菜单效果
Feb 09 #Javascript
用javascript实现倒计时效果
Feb 09 #Javascript
javascript实现倒计时关闭广告
Feb 09 #Javascript
javascript实现固定侧边栏
Feb 09 #Javascript
You might like
搜索引擎技术核心揭密
2006/10/09 PHP
php中将一个对象保存到Session中的方法
2015/03/13 PHP
PHP多维数组转一维数组的简单实现方法
2015/12/23 PHP
Yii快速入门经典教程
2015/12/28 PHP
PHP中抽象类和抽象方法概念与用法分析
2016/05/24 PHP
Laravel6.18.19如何优雅的切换发件账户
2020/06/14 PHP
jQuery中eq()方法用法实例
2015/01/05 Javascript
js HTML5手机刮刮乐代码
2020/09/29 Javascript
Angular.js中用ng-repeat-start实现自定义显示
2016/10/18 Javascript
jquery uploadify隐藏上传进度的实现方法
2017/02/06 Javascript
jQuery、layer实现弹出层的打开、关闭功能
2017/06/28 jQuery
利用Node.js检测端口是否被占用的方法
2017/12/07 Javascript
vue 做移动端微信公众号采坑经验记录
2018/04/26 Javascript
微信小程序新手教程之页面打开数量限制
2019/03/03 Javascript
Python入门_浅谈for循环、while循环
2017/05/16 Python
Python+matplotlib+numpy绘制精美的条形统计图
2018/01/02 Python
python spyder中读取txt为图片的方法
2018/04/27 Python
Python开启线程,在函数中开线程的实例
2019/02/22 Python
基于python判断目录或者文件代码实例
2019/11/29 Python
python实现扫雷游戏
2020/03/03 Python
pycharm 2018 激活码及破解补丁激活方式
2020/09/21 Python
纯CSS实现颜色渐变效果(包含环形渐变、线性渐变、彩虹效果等)
2014/05/07 HTML / CSS
泰国办公用品购物网站:OfficeMate
2018/02/04 全球购物
ellesse美国官方商店:意大利高级运动服品牌
2019/10/29 全球购物
学期自我鉴定范文
2013/10/01 职场文书
工程监理应届生求职信
2013/11/09 职场文书
违反课堂纪律检讨书
2014/01/19 职场文书
公司委托书范本
2014/04/04 职场文书
银行职员自我鉴定
2014/04/20 职场文书
公路绿化方案
2014/05/12 职场文书
校庆标语集锦
2014/06/25 职场文书
入党介绍人意见范文
2015/06/01 职场文书
成绩单家长意见
2015/06/03 职场文书
python 机器学习的标准化、归一化、正则化、离散化和白化
2021/04/16 Python
Node实现搜索框进行模糊查询
2021/06/28 Javascript
聊聊配置 Nginx 访问与错误日志的问题
2022/05/25 Servers