微信小程序实现点赞业务


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中“+=”的应用
Feb 02 Javascript
Prototype Hash对象 学习
Jul 19 Javascript
不一样的文字闪烁 轮番闪烁
Nov 11 Javascript
详解AngularJS中的依赖注入机制
Jun 17 Javascript
jQuery实现两款有动画功能的导航菜单代码
Sep 16 Javascript
jQuery查看选中对象HTML代码的方法
Jun 17 Javascript
基于JS实现仿百度百家主页的轮播图效果
Mar 06 Javascript
微信小程序使用wxParse解析html的实现示例
Aug 30 Javascript
jQuery 同时获取多个标签的指定内容并储存为数组
Nov 20 jQuery
JavaScript实现英语单词题库
Dec 24 Javascript
VUE中使用HTTP库Axios方法详解
Feb 05 Javascript
JavaScript读取本地文件常用方法流程解析
Oct 12 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
备份mysql数据库的php代码(一个表一个文件)
2010/05/28 PHP
phpMyAdmin 链接表的附加功能尚未激活的问题
2010/08/01 PHP
php学习笔记之面向对象编程
2012/12/29 PHP
php使用filter过滤器验证邮箱 ipv6地址 url验证
2013/12/25 PHP
php找出指定范围内回文数且平方根也是回文数的方法
2015/03/23 PHP
微信公众号实现会员卡领取功能
2017/06/08 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
2020/02/27 PHP
Javascript insertAfter() 实现函数代码
2011/10/12 Javascript
基于javascript的JSON格式页面展示美化方法
2014/07/02 Javascript
jquery实现个人中心导航菜单效果和美观都非常不错
2014/09/02 Javascript
在css加载完毕后自动判断页面是否加入css或js文件
2014/09/10 Javascript
js控制多图左右滚动切换效果代码分享
2015/08/26 Javascript
借助FileReader实现将文件编码为Base64后通过AJAX上传
2015/12/24 Javascript
jQuery获取select选中的option的value值实现方法
2016/08/29 Javascript
Vue2仿淘宝实现省市区三级联动
2020/04/15 Javascript
如何使用 vue + d3 画一棵树
2018/12/03 Javascript
浅谈小程序 setData学问多
2019/02/20 Javascript
Python实现的质因式分解算法示例
2018/05/03 Python
pandas读取csv文件,分隔符参数sep的实例
2018/12/12 Python
Python元组常见操作示例
2019/02/19 Python
python自动化测试之如何解析excel文件
2019/06/27 Python
Python函数的定义方式与函数参数问题实例分析
2019/12/26 Python
Python新手学习raise用法
2020/06/03 Python
Python 实现劳拉游戏的实例代码(四连环、重力四子棋)
2021/03/03 Python
英国天然抗衰老护肤品品牌:Nakin Skin Care
2019/04/16 全球购物
职工运动会邀请函
2014/02/02 职场文书
手机促销活动方案
2014/02/05 职场文书
中学生操行评语
2014/04/24 职场文书
六查六看六改心得体会
2014/10/14 职场文书
违反学校规则制度检讨书
2015/01/01 职场文书
品质保证书格式
2015/02/28 职场文书
简爱电影观后感
2015/06/10 职场文书
排球赛新闻稿
2015/07/17 职场文书
关于Python使用turtle库画任意图的问题
2022/04/01 Python
详解PyTorch模型保存与加载
2022/04/28 Python
vue使用watch监听属性变化
2022/04/30 Vue.js