微信小程序实现点赞业务


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 相关文章推荐
Javascript读取cookie函数代码
Oct 16 Javascript
jquery实现智能感知连接外网搜索
May 21 Javascript
js统计页面的来访次数实现代码
May 09 Javascript
js面向对象之公有、私有、静态属性和方法详解
Apr 17 Javascript
浅谈Jquery为元素绑定事件
Apr 27 Javascript
基于javascript数组实现图片轮播
May 02 Javascript
浅析vue数据绑定
Jan 17 Javascript
详解从Node.js的child_process模块来学习父子进程之间的通信
Mar 27 Javascript
JS实现图片预加载之无序预加载功能代码
May 12 Javascript
Angularjs自定义指令Directive详解
May 27 Javascript
jQuery中each方法的使用详解
Mar 18 jQuery
vue数据控制视图源码解析
Mar 28 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
SONY ICF-F10中波修复记
2021/03/02 无线电
Windows7下PHP开发环境安装配置图文方法
2010/05/20 PHP
php !function_exists(&quot;T7FC56270E7A70FA81A5935B72EACBE29&quot;))代码解密
2011/01/07 PHP
php字符串过滤strip_tags()函数用法实例分析
2019/06/24 PHP
ThinkPHP框架结合Ajax实现用户名校验功能示例
2019/07/03 PHP
了解了这些才能开始发挥jQuery的威力
2013/10/10 Javascript
jQuery判断多个input file 都不能为空的例子
2015/06/23 Javascript
.NET微信公众号开发之创建自定义菜单
2015/07/16 Javascript
jQuery插件实现无缝滚动特效
2015/11/24 Javascript
实例解析jQuery插件EasyUI最常用的表单验证规则
2015/11/29 Javascript
Jquery1.9.1源码分析系列(十五)动画处理之外篇
2015/12/04 Javascript
JS判断输入的字符串是否是数字的方法(正则表达式)
2016/11/29 Javascript
JSON中key动态设置及JSON.parse和JSON.stringify()的区别
2016/12/29 Javascript
微信小程序实现手指拖动选项排序
2020/04/22 Javascript
Jquery高级应用Deferred对象原理及使用实例
2020/05/28 jQuery
python client使用http post 到server端的代码
2013/02/10 Python
python使用ctypes模块调用windowsapi获取系统版本示例
2014/04/17 Python
python之yield表达式学习
2014/09/02 Python
Python标准库之Sys模块使用详解
2015/05/23 Python
python正则表达式re之compile函数解析
2017/10/25 Python
python利用有道翻译实现&quot;语言翻译器&quot;的功能实例
2017/11/14 Python
python K近邻算法的kd树实现
2018/09/06 Python
Python线性拟合实现函数与用法示例
2018/12/13 Python
Python matplotlib生成图片背景透明的示例代码
2019/08/30 Python
Python如何进行时间处理
2020/08/06 Python
详解基于python的图像Gabor变换及特征提取
2020/10/26 Python
Autopep8的使用(python自动编排工具)
2021/03/02 Python
使用phonegap获取位置信息的实现方法
2017/03/31 HTML / CSS
五分钟学会HTML5的WebSocket协议
2019/11/22 HTML / CSS
外贸英语专业求职信范文
2013/12/25 职场文书
秸秆管理实施方案
2014/03/15 职场文书
最新优秀教师个人先进事迹材料
2014/05/06 职场文书
公积金接收函格式
2015/01/30 职场文书
python pygame入门教程
2021/06/01 Python
Pycharm连接远程服务器并远程调试的全过程
2021/06/24 Python
JavaScript实现酷炫的鼠标拖尾特效
2022/02/18 Javascript